{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# MNIST数据集\n",
    "- 这是一组由美国高中生和人口调查局员工手写的70000个数字的图片。 每张图像都用其代表的数字标记。\n",
    "- fetch_mldata()函数已经被弃用，现在使用的是frtch_openml()，但是这个函数返回的结果是无序的，所以需要手动排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.datasets import fetch_openml"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "mnist = fetch_openml('mnist_784', version=1, cache=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sort_by_target(mnist):\n",
    "    reorder_train = np.array(sorted([(target, i) for i, target in enumerate(mnist.target[:60000])]))[:,1]\n",
    "    reorder_test = np.array(sorted([(target, i) for i, target in enumerate(mnist.target[60000:])]))[:,1]\n",
    "    mnist.data[:60000] = mnist.data[reorder_train]\n",
    "    mnist.target[:60000] = mnist.target[reorder_train]\n",
    "    mnist.data[60000:] = mnist.data[reorder_test + 60000]\n",
    "    mnist.target[60000:] = mnist.target[reorder_test + 60000]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "mnist.target = mnist.target.astype(np.int8)  # 把标签转为整形"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "sort_by_target(mnist)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([[0., 0., 0., ..., 0., 0., 0.],\n",
       "        [0., 0., 0., ..., 0., 0., 0.],\n",
       "        [0., 0., 0., ..., 0., 0., 0.],\n",
       "        ...,\n",
       "        [0., 0., 0., ..., 0., 0., 0.],\n",
       "        [0., 0., 0., ..., 0., 0., 0.],\n",
       "        [0., 0., 0., ..., 0., 0., 0.]]),\n",
       " array([0, 0, 0, ..., 9, 9, 9], dtype=int8))"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mnist.data, mnist.target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'data': array([[0., 0., 0., ..., 0., 0., 0.],\n",
       "        [0., 0., 0., ..., 0., 0., 0.],\n",
       "        [0., 0., 0., ..., 0., 0., 0.],\n",
       "        ...,\n",
       "        [0., 0., 0., ..., 0., 0., 0.],\n",
       "        [0., 0., 0., ..., 0., 0., 0.],\n",
       "        [0., 0., 0., ..., 0., 0., 0.]]),\n",
       " 'target': array([0, 0, 0, ..., 9, 9, 9], dtype=int8),\n",
       " 'feature_names': ['pixel1',\n",
       "  'pixel2',\n",
       "  'pixel3',\n",
       "  'pixel4',\n",
       "  'pixel5',\n",
       "  'pixel6',\n",
       "  'pixel7',\n",
       "  'pixel8',\n",
       "  'pixel9',\n",
       "  'pixel10',\n",
       "  'pixel11',\n",
       "  'pixel12',\n",
       "  'pixel13',\n",
       "  'pixel14',\n",
       "  'pixel15',\n",
       "  'pixel16',\n",
       "  'pixel17',\n",
       "  'pixel18',\n",
       "  'pixel19',\n",
       "  'pixel20',\n",
       "  'pixel21',\n",
       "  'pixel22',\n",
       "  'pixel23',\n",
       "  'pixel24',\n",
       "  'pixel25',\n",
       "  'pixel26',\n",
       "  'pixel27',\n",
       "  'pixel28',\n",
       "  'pixel29',\n",
       "  'pixel30',\n",
       "  'pixel31',\n",
       "  'pixel32',\n",
       "  'pixel33',\n",
       "  'pixel34',\n",
       "  'pixel35',\n",
       "  'pixel36',\n",
       "  'pixel37',\n",
       "  'pixel38',\n",
       "  'pixel39',\n",
       "  'pixel40',\n",
       "  'pixel41',\n",
       "  'pixel42',\n",
       "  'pixel43',\n",
       "  'pixel44',\n",
       "  'pixel45',\n",
       "  'pixel46',\n",
       "  'pixel47',\n",
       "  'pixel48',\n",
       "  'pixel49',\n",
       "  'pixel50',\n",
       "  'pixel51',\n",
       "  'pixel52',\n",
       "  'pixel53',\n",
       "  'pixel54',\n",
       "  'pixel55',\n",
       "  'pixel56',\n",
       "  'pixel57',\n",
       "  'pixel58',\n",
       "  'pixel59',\n",
       "  'pixel60',\n",
       "  'pixel61',\n",
       "  'pixel62',\n",
       "  'pixel63',\n",
       "  'pixel64',\n",
       "  'pixel65',\n",
       "  'pixel66',\n",
       "  'pixel67',\n",
       "  'pixel68',\n",
       "  'pixel69',\n",
       "  'pixel70',\n",
       "  'pixel71',\n",
       "  'pixel72',\n",
       "  'pixel73',\n",
       "  'pixel74',\n",
       "  'pixel75',\n",
       "  'pixel76',\n",
       "  'pixel77',\n",
       "  'pixel78',\n",
       "  'pixel79',\n",
       "  'pixel80',\n",
       "  'pixel81',\n",
       "  'pixel82',\n",
       "  'pixel83',\n",
       "  'pixel84',\n",
       "  'pixel85',\n",
       "  'pixel86',\n",
       "  'pixel87',\n",
       "  'pixel88',\n",
       "  'pixel89',\n",
       "  'pixel90',\n",
       "  'pixel91',\n",
       "  'pixel92',\n",
       "  'pixel93',\n",
       "  'pixel94',\n",
       "  'pixel95',\n",
       "  'pixel96',\n",
       "  'pixel97',\n",
       "  'pixel98',\n",
       "  'pixel99',\n",
       "  'pixel100',\n",
       "  'pixel101',\n",
       "  'pixel102',\n",
       "  'pixel103',\n",
       "  'pixel104',\n",
       "  'pixel105',\n",
       "  'pixel106',\n",
       "  'pixel107',\n",
       "  'pixel108',\n",
       "  'pixel109',\n",
       "  'pixel110',\n",
       "  'pixel111',\n",
       "  'pixel112',\n",
       "  'pixel113',\n",
       "  'pixel114',\n",
       "  'pixel115',\n",
       "  'pixel116',\n",
       "  'pixel117',\n",
       "  'pixel118',\n",
       "  'pixel119',\n",
       "  'pixel120',\n",
       "  'pixel121',\n",
       "  'pixel122',\n",
       "  'pixel123',\n",
       "  'pixel124',\n",
       "  'pixel125',\n",
       "  'pixel126',\n",
       "  'pixel127',\n",
       "  'pixel128',\n",
       "  'pixel129',\n",
       "  'pixel130',\n",
       "  'pixel131',\n",
       "  'pixel132',\n",
       "  'pixel133',\n",
       "  'pixel134',\n",
       "  'pixel135',\n",
       "  'pixel136',\n",
       "  'pixel137',\n",
       "  'pixel138',\n",
       "  'pixel139',\n",
       "  'pixel140',\n",
       "  'pixel141',\n",
       "  'pixel142',\n",
       "  'pixel143',\n",
       "  'pixel144',\n",
       "  'pixel145',\n",
       "  'pixel146',\n",
       "  'pixel147',\n",
       "  'pixel148',\n",
       "  'pixel149',\n",
       "  'pixel150',\n",
       "  'pixel151',\n",
       "  'pixel152',\n",
       "  'pixel153',\n",
       "  'pixel154',\n",
       "  'pixel155',\n",
       "  'pixel156',\n",
       "  'pixel157',\n",
       "  'pixel158',\n",
       "  'pixel159',\n",
       "  'pixel160',\n",
       "  'pixel161',\n",
       "  'pixel162',\n",
       "  'pixel163',\n",
       "  'pixel164',\n",
       "  'pixel165',\n",
       "  'pixel166',\n",
       "  'pixel167',\n",
       "  'pixel168',\n",
       "  'pixel169',\n",
       "  'pixel170',\n",
       "  'pixel171',\n",
       "  'pixel172',\n",
       "  'pixel173',\n",
       "  'pixel174',\n",
       "  'pixel175',\n",
       "  'pixel176',\n",
       "  'pixel177',\n",
       "  'pixel178',\n",
       "  'pixel179',\n",
       "  'pixel180',\n",
       "  'pixel181',\n",
       "  'pixel182',\n",
       "  'pixel183',\n",
       "  'pixel184',\n",
       "  'pixel185',\n",
       "  'pixel186',\n",
       "  'pixel187',\n",
       "  'pixel188',\n",
       "  'pixel189',\n",
       "  'pixel190',\n",
       "  'pixel191',\n",
       "  'pixel192',\n",
       "  'pixel193',\n",
       "  'pixel194',\n",
       "  'pixel195',\n",
       "  'pixel196',\n",
       "  'pixel197',\n",
       "  'pixel198',\n",
       "  'pixel199',\n",
       "  'pixel200',\n",
       "  'pixel201',\n",
       "  'pixel202',\n",
       "  'pixel203',\n",
       "  'pixel204',\n",
       "  'pixel205',\n",
       "  'pixel206',\n",
       "  'pixel207',\n",
       "  'pixel208',\n",
       "  'pixel209',\n",
       "  'pixel210',\n",
       "  'pixel211',\n",
       "  'pixel212',\n",
       "  'pixel213',\n",
       "  'pixel214',\n",
       "  'pixel215',\n",
       "  'pixel216',\n",
       "  'pixel217',\n",
       "  'pixel218',\n",
       "  'pixel219',\n",
       "  'pixel220',\n",
       "  'pixel221',\n",
       "  'pixel222',\n",
       "  'pixel223',\n",
       "  'pixel224',\n",
       "  'pixel225',\n",
       "  'pixel226',\n",
       "  'pixel227',\n",
       "  'pixel228',\n",
       "  'pixel229',\n",
       "  'pixel230',\n",
       "  'pixel231',\n",
       "  'pixel232',\n",
       "  'pixel233',\n",
       "  'pixel234',\n",
       "  'pixel235',\n",
       "  'pixel236',\n",
       "  'pixel237',\n",
       "  'pixel238',\n",
       "  'pixel239',\n",
       "  'pixel240',\n",
       "  'pixel241',\n",
       "  'pixel242',\n",
       "  'pixel243',\n",
       "  'pixel244',\n",
       "  'pixel245',\n",
       "  'pixel246',\n",
       "  'pixel247',\n",
       "  'pixel248',\n",
       "  'pixel249',\n",
       "  'pixel250',\n",
       "  'pixel251',\n",
       "  'pixel252',\n",
       "  'pixel253',\n",
       "  'pixel254',\n",
       "  'pixel255',\n",
       "  'pixel256',\n",
       "  'pixel257',\n",
       "  'pixel258',\n",
       "  'pixel259',\n",
       "  'pixel260',\n",
       "  'pixel261',\n",
       "  'pixel262',\n",
       "  'pixel263',\n",
       "  'pixel264',\n",
       "  'pixel265',\n",
       "  'pixel266',\n",
       "  'pixel267',\n",
       "  'pixel268',\n",
       "  'pixel269',\n",
       "  'pixel270',\n",
       "  'pixel271',\n",
       "  'pixel272',\n",
       "  'pixel273',\n",
       "  'pixel274',\n",
       "  'pixel275',\n",
       "  'pixel276',\n",
       "  'pixel277',\n",
       "  'pixel278',\n",
       "  'pixel279',\n",
       "  'pixel280',\n",
       "  'pixel281',\n",
       "  'pixel282',\n",
       "  'pixel283',\n",
       "  'pixel284',\n",
       "  'pixel285',\n",
       "  'pixel286',\n",
       "  'pixel287',\n",
       "  'pixel288',\n",
       "  'pixel289',\n",
       "  'pixel290',\n",
       "  'pixel291',\n",
       "  'pixel292',\n",
       "  'pixel293',\n",
       "  'pixel294',\n",
       "  'pixel295',\n",
       "  'pixel296',\n",
       "  'pixel297',\n",
       "  'pixel298',\n",
       "  'pixel299',\n",
       "  'pixel300',\n",
       "  'pixel301',\n",
       "  'pixel302',\n",
       "  'pixel303',\n",
       "  'pixel304',\n",
       "  'pixel305',\n",
       "  'pixel306',\n",
       "  'pixel307',\n",
       "  'pixel308',\n",
       "  'pixel309',\n",
       "  'pixel310',\n",
       "  'pixel311',\n",
       "  'pixel312',\n",
       "  'pixel313',\n",
       "  'pixel314',\n",
       "  'pixel315',\n",
       "  'pixel316',\n",
       "  'pixel317',\n",
       "  'pixel318',\n",
       "  'pixel319',\n",
       "  'pixel320',\n",
       "  'pixel321',\n",
       "  'pixel322',\n",
       "  'pixel323',\n",
       "  'pixel324',\n",
       "  'pixel325',\n",
       "  'pixel326',\n",
       "  'pixel327',\n",
       "  'pixel328',\n",
       "  'pixel329',\n",
       "  'pixel330',\n",
       "  'pixel331',\n",
       "  'pixel332',\n",
       "  'pixel333',\n",
       "  'pixel334',\n",
       "  'pixel335',\n",
       "  'pixel336',\n",
       "  'pixel337',\n",
       "  'pixel338',\n",
       "  'pixel339',\n",
       "  'pixel340',\n",
       "  'pixel341',\n",
       "  'pixel342',\n",
       "  'pixel343',\n",
       "  'pixel344',\n",
       "  'pixel345',\n",
       "  'pixel346',\n",
       "  'pixel347',\n",
       "  'pixel348',\n",
       "  'pixel349',\n",
       "  'pixel350',\n",
       "  'pixel351',\n",
       "  'pixel352',\n",
       "  'pixel353',\n",
       "  'pixel354',\n",
       "  'pixel355',\n",
       "  'pixel356',\n",
       "  'pixel357',\n",
       "  'pixel358',\n",
       "  'pixel359',\n",
       "  'pixel360',\n",
       "  'pixel361',\n",
       "  'pixel362',\n",
       "  'pixel363',\n",
       "  'pixel364',\n",
       "  'pixel365',\n",
       "  'pixel366',\n",
       "  'pixel367',\n",
       "  'pixel368',\n",
       "  'pixel369',\n",
       "  'pixel370',\n",
       "  'pixel371',\n",
       "  'pixel372',\n",
       "  'pixel373',\n",
       "  'pixel374',\n",
       "  'pixel375',\n",
       "  'pixel376',\n",
       "  'pixel377',\n",
       "  'pixel378',\n",
       "  'pixel379',\n",
       "  'pixel380',\n",
       "  'pixel381',\n",
       "  'pixel382',\n",
       "  'pixel383',\n",
       "  'pixel384',\n",
       "  'pixel385',\n",
       "  'pixel386',\n",
       "  'pixel387',\n",
       "  'pixel388',\n",
       "  'pixel389',\n",
       "  'pixel390',\n",
       "  'pixel391',\n",
       "  'pixel392',\n",
       "  'pixel393',\n",
       "  'pixel394',\n",
       "  'pixel395',\n",
       "  'pixel396',\n",
       "  'pixel397',\n",
       "  'pixel398',\n",
       "  'pixel399',\n",
       "  'pixel400',\n",
       "  'pixel401',\n",
       "  'pixel402',\n",
       "  'pixel403',\n",
       "  'pixel404',\n",
       "  'pixel405',\n",
       "  'pixel406',\n",
       "  'pixel407',\n",
       "  'pixel408',\n",
       "  'pixel409',\n",
       "  'pixel410',\n",
       "  'pixel411',\n",
       "  'pixel412',\n",
       "  'pixel413',\n",
       "  'pixel414',\n",
       "  'pixel415',\n",
       "  'pixel416',\n",
       "  'pixel417',\n",
       "  'pixel418',\n",
       "  'pixel419',\n",
       "  'pixel420',\n",
       "  'pixel421',\n",
       "  'pixel422',\n",
       "  'pixel423',\n",
       "  'pixel424',\n",
       "  'pixel425',\n",
       "  'pixel426',\n",
       "  'pixel427',\n",
       "  'pixel428',\n",
       "  'pixel429',\n",
       "  'pixel430',\n",
       "  'pixel431',\n",
       "  'pixel432',\n",
       "  'pixel433',\n",
       "  'pixel434',\n",
       "  'pixel435',\n",
       "  'pixel436',\n",
       "  'pixel437',\n",
       "  'pixel438',\n",
       "  'pixel439',\n",
       "  'pixel440',\n",
       "  'pixel441',\n",
       "  'pixel442',\n",
       "  'pixel443',\n",
       "  'pixel444',\n",
       "  'pixel445',\n",
       "  'pixel446',\n",
       "  'pixel447',\n",
       "  'pixel448',\n",
       "  'pixel449',\n",
       "  'pixel450',\n",
       "  'pixel451',\n",
       "  'pixel452',\n",
       "  'pixel453',\n",
       "  'pixel454',\n",
       "  'pixel455',\n",
       "  'pixel456',\n",
       "  'pixel457',\n",
       "  'pixel458',\n",
       "  'pixel459',\n",
       "  'pixel460',\n",
       "  'pixel461',\n",
       "  'pixel462',\n",
       "  'pixel463',\n",
       "  'pixel464',\n",
       "  'pixel465',\n",
       "  'pixel466',\n",
       "  'pixel467',\n",
       "  'pixel468',\n",
       "  'pixel469',\n",
       "  'pixel470',\n",
       "  'pixel471',\n",
       "  'pixel472',\n",
       "  'pixel473',\n",
       "  'pixel474',\n",
       "  'pixel475',\n",
       "  'pixel476',\n",
       "  'pixel477',\n",
       "  'pixel478',\n",
       "  'pixel479',\n",
       "  'pixel480',\n",
       "  'pixel481',\n",
       "  'pixel482',\n",
       "  'pixel483',\n",
       "  'pixel484',\n",
       "  'pixel485',\n",
       "  'pixel486',\n",
       "  'pixel487',\n",
       "  'pixel488',\n",
       "  'pixel489',\n",
       "  'pixel490',\n",
       "  'pixel491',\n",
       "  'pixel492',\n",
       "  'pixel493',\n",
       "  'pixel494',\n",
       "  'pixel495',\n",
       "  'pixel496',\n",
       "  'pixel497',\n",
       "  'pixel498',\n",
       "  'pixel499',\n",
       "  'pixel500',\n",
       "  'pixel501',\n",
       "  'pixel502',\n",
       "  'pixel503',\n",
       "  'pixel504',\n",
       "  'pixel505',\n",
       "  'pixel506',\n",
       "  'pixel507',\n",
       "  'pixel508',\n",
       "  'pixel509',\n",
       "  'pixel510',\n",
       "  'pixel511',\n",
       "  'pixel512',\n",
       "  'pixel513',\n",
       "  'pixel514',\n",
       "  'pixel515',\n",
       "  'pixel516',\n",
       "  'pixel517',\n",
       "  'pixel518',\n",
       "  'pixel519',\n",
       "  'pixel520',\n",
       "  'pixel521',\n",
       "  'pixel522',\n",
       "  'pixel523',\n",
       "  'pixel524',\n",
       "  'pixel525',\n",
       "  'pixel526',\n",
       "  'pixel527',\n",
       "  'pixel528',\n",
       "  'pixel529',\n",
       "  'pixel530',\n",
       "  'pixel531',\n",
       "  'pixel532',\n",
       "  'pixel533',\n",
       "  'pixel534',\n",
       "  'pixel535',\n",
       "  'pixel536',\n",
       "  'pixel537',\n",
       "  'pixel538',\n",
       "  'pixel539',\n",
       "  'pixel540',\n",
       "  'pixel541',\n",
       "  'pixel542',\n",
       "  'pixel543',\n",
       "  'pixel544',\n",
       "  'pixel545',\n",
       "  'pixel546',\n",
       "  'pixel547',\n",
       "  'pixel548',\n",
       "  'pixel549',\n",
       "  'pixel550',\n",
       "  'pixel551',\n",
       "  'pixel552',\n",
       "  'pixel553',\n",
       "  'pixel554',\n",
       "  'pixel555',\n",
       "  'pixel556',\n",
       "  'pixel557',\n",
       "  'pixel558',\n",
       "  'pixel559',\n",
       "  'pixel560',\n",
       "  'pixel561',\n",
       "  'pixel562',\n",
       "  'pixel563',\n",
       "  'pixel564',\n",
       "  'pixel565',\n",
       "  'pixel566',\n",
       "  'pixel567',\n",
       "  'pixel568',\n",
       "  'pixel569',\n",
       "  'pixel570',\n",
       "  'pixel571',\n",
       "  'pixel572',\n",
       "  'pixel573',\n",
       "  'pixel574',\n",
       "  'pixel575',\n",
       "  'pixel576',\n",
       "  'pixel577',\n",
       "  'pixel578',\n",
       "  'pixel579',\n",
       "  'pixel580',\n",
       "  'pixel581',\n",
       "  'pixel582',\n",
       "  'pixel583',\n",
       "  'pixel584',\n",
       "  'pixel585',\n",
       "  'pixel586',\n",
       "  'pixel587',\n",
       "  'pixel588',\n",
       "  'pixel589',\n",
       "  'pixel590',\n",
       "  'pixel591',\n",
       "  'pixel592',\n",
       "  'pixel593',\n",
       "  'pixel594',\n",
       "  'pixel595',\n",
       "  'pixel596',\n",
       "  'pixel597',\n",
       "  'pixel598',\n",
       "  'pixel599',\n",
       "  'pixel600',\n",
       "  'pixel601',\n",
       "  'pixel602',\n",
       "  'pixel603',\n",
       "  'pixel604',\n",
       "  'pixel605',\n",
       "  'pixel606',\n",
       "  'pixel607',\n",
       "  'pixel608',\n",
       "  'pixel609',\n",
       "  'pixel610',\n",
       "  'pixel611',\n",
       "  'pixel612',\n",
       "  'pixel613',\n",
       "  'pixel614',\n",
       "  'pixel615',\n",
       "  'pixel616',\n",
       "  'pixel617',\n",
       "  'pixel618',\n",
       "  'pixel619',\n",
       "  'pixel620',\n",
       "  'pixel621',\n",
       "  'pixel622',\n",
       "  'pixel623',\n",
       "  'pixel624',\n",
       "  'pixel625',\n",
       "  'pixel626',\n",
       "  'pixel627',\n",
       "  'pixel628',\n",
       "  'pixel629',\n",
       "  'pixel630',\n",
       "  'pixel631',\n",
       "  'pixel632',\n",
       "  'pixel633',\n",
       "  'pixel634',\n",
       "  'pixel635',\n",
       "  'pixel636',\n",
       "  'pixel637',\n",
       "  'pixel638',\n",
       "  'pixel639',\n",
       "  'pixel640',\n",
       "  'pixel641',\n",
       "  'pixel642',\n",
       "  'pixel643',\n",
       "  'pixel644',\n",
       "  'pixel645',\n",
       "  'pixel646',\n",
       "  'pixel647',\n",
       "  'pixel648',\n",
       "  'pixel649',\n",
       "  'pixel650',\n",
       "  'pixel651',\n",
       "  'pixel652',\n",
       "  'pixel653',\n",
       "  'pixel654',\n",
       "  'pixel655',\n",
       "  'pixel656',\n",
       "  'pixel657',\n",
       "  'pixel658',\n",
       "  'pixel659',\n",
       "  'pixel660',\n",
       "  'pixel661',\n",
       "  'pixel662',\n",
       "  'pixel663',\n",
       "  'pixel664',\n",
       "  'pixel665',\n",
       "  'pixel666',\n",
       "  'pixel667',\n",
       "  'pixel668',\n",
       "  'pixel669',\n",
       "  'pixel670',\n",
       "  'pixel671',\n",
       "  'pixel672',\n",
       "  'pixel673',\n",
       "  'pixel674',\n",
       "  'pixel675',\n",
       "  'pixel676',\n",
       "  'pixel677',\n",
       "  'pixel678',\n",
       "  'pixel679',\n",
       "  'pixel680',\n",
       "  'pixel681',\n",
       "  'pixel682',\n",
       "  'pixel683',\n",
       "  'pixel684',\n",
       "  'pixel685',\n",
       "  'pixel686',\n",
       "  'pixel687',\n",
       "  'pixel688',\n",
       "  'pixel689',\n",
       "  'pixel690',\n",
       "  'pixel691',\n",
       "  'pixel692',\n",
       "  'pixel693',\n",
       "  'pixel694',\n",
       "  'pixel695',\n",
       "  'pixel696',\n",
       "  'pixel697',\n",
       "  'pixel698',\n",
       "  'pixel699',\n",
       "  'pixel700',\n",
       "  'pixel701',\n",
       "  'pixel702',\n",
       "  'pixel703',\n",
       "  'pixel704',\n",
       "  'pixel705',\n",
       "  'pixel706',\n",
       "  'pixel707',\n",
       "  'pixel708',\n",
       "  'pixel709',\n",
       "  'pixel710',\n",
       "  'pixel711',\n",
       "  'pixel712',\n",
       "  'pixel713',\n",
       "  'pixel714',\n",
       "  'pixel715',\n",
       "  'pixel716',\n",
       "  'pixel717',\n",
       "  'pixel718',\n",
       "  'pixel719',\n",
       "  'pixel720',\n",
       "  'pixel721',\n",
       "  'pixel722',\n",
       "  'pixel723',\n",
       "  'pixel724',\n",
       "  'pixel725',\n",
       "  'pixel726',\n",
       "  'pixel727',\n",
       "  'pixel728',\n",
       "  'pixel729',\n",
       "  'pixel730',\n",
       "  'pixel731',\n",
       "  'pixel732',\n",
       "  'pixel733',\n",
       "  'pixel734',\n",
       "  'pixel735',\n",
       "  'pixel736',\n",
       "  'pixel737',\n",
       "  'pixel738',\n",
       "  'pixel739',\n",
       "  'pixel740',\n",
       "  'pixel741',\n",
       "  'pixel742',\n",
       "  'pixel743',\n",
       "  'pixel744',\n",
       "  'pixel745',\n",
       "  'pixel746',\n",
       "  'pixel747',\n",
       "  'pixel748',\n",
       "  'pixel749',\n",
       "  'pixel750',\n",
       "  'pixel751',\n",
       "  'pixel752',\n",
       "  'pixel753',\n",
       "  'pixel754',\n",
       "  'pixel755',\n",
       "  'pixel756',\n",
       "  'pixel757',\n",
       "  'pixel758',\n",
       "  'pixel759',\n",
       "  'pixel760',\n",
       "  'pixel761',\n",
       "  'pixel762',\n",
       "  'pixel763',\n",
       "  'pixel764',\n",
       "  'pixel765',\n",
       "  'pixel766',\n",
       "  'pixel767',\n",
       "  'pixel768',\n",
       "  'pixel769',\n",
       "  'pixel770',\n",
       "  'pixel771',\n",
       "  'pixel772',\n",
       "  'pixel773',\n",
       "  'pixel774',\n",
       "  'pixel775',\n",
       "  'pixel776',\n",
       "  'pixel777',\n",
       "  'pixel778',\n",
       "  'pixel779',\n",
       "  'pixel780',\n",
       "  'pixel781',\n",
       "  'pixel782',\n",
       "  'pixel783',\n",
       "  'pixel784'],\n",
       " 'DESCR': \"**Author**: Yann LeCun, Corinna Cortes, Christopher J.C. Burges  \\n**Source**: [MNIST Website](http://yann.lecun.com/exdb/mnist/) - Date unknown  \\n**Please cite**:  \\n\\nThe MNIST database of handwritten digits with 784 features, raw data available at: http://yann.lecun.com/exdb/mnist/. It can be split in a training set of the first 60,000 examples, and a test set of 10,000 examples  \\n\\nIt is a subset of a larger set available from NIST. The digits have been size-normalized and centered in a fixed-size image. It is a good database for people who want to try learning techniques and pattern recognition methods on real-world data while spending minimal efforts on preprocessing and formatting. The original black and white (bilevel) images from NIST were size normalized to fit in a 20x20 pixel box while preserving their aspect ratio. The resulting images contain grey levels as a result of the anti-aliasing technique used by the normalization algorithm. the images were centered in a 28x28 image by computing the center of mass of the pixels, and translating the image so as to position this point at the center of the 28x28 field.  \\n\\nWith some classification methods (particularly template-based methods, such as SVM and K-nearest neighbors), the error rate improves when the digits are centered by bounding box rather than center of mass. If you do this kind of pre-processing, you should report it in your publications. The MNIST database was constructed from NIST's NIST originally designated SD-3 as their training set and SD-1 as their test set. However, SD-3 is much cleaner and easier to recognize than SD-1. The reason for this can be found on the fact that SD-3 was collected among Census Bureau employees, while SD-1 was collected among high-school students. Drawing sensible conclusions from learning experiments requires that the result be independent of the choice of training set and test among the complete set of samples. Therefore it was necessary to build a new database by mixing NIST's datasets.  \\n\\nThe MNIST training set is composed of 30,000 patterns from SD-3 and 30,000 patterns from SD-1. Our test set was composed of 5,000 patterns from SD-3 and 5,000 patterns from SD-1. The 60,000 pattern training set contained examples from approximately 250 writers. We made sure that the sets of writers of the training set and test set were disjoint. SD-1 contains 58,527 digit images written by 500 different writers. In contrast to SD-3, where blocks of data from each writer appeared in sequence, the data in SD-1 is scrambled. Writer identities for SD-1 is available and we used this information to unscramble the writers. We then split SD-1 in two: characters written by the first 250 writers went into our new training set. The remaining 250 writers were placed in our test set. Thus we had two sets with nearly 30,000 examples each. The new training set was completed with enough examples from SD-3, starting at pattern # 0, to make a full set of 60,000 training patterns. Similarly, the new test set was completed with SD-3 examples starting at pattern # 35,000 to make a full set with 60,000 test patterns. Only a subset of 10,000 test images (5,000 from SD-1 and 5,000 from SD-3) is available on this site. The full 60,000 sample training set is available.\\n\\nDownloaded from openml.org.\",\n",
       " 'details': {'id': '554',\n",
       "  'name': 'mnist_784',\n",
       "  'version': '1',\n",
       "  'format': 'ARFF',\n",
       "  'upload_date': '2014-09-29T03:28:38',\n",
       "  'licence': 'Public',\n",
       "  'url': 'https://www.openml.org/data/v1/download/52667/mnist_784.arff',\n",
       "  'file_id': '52667',\n",
       "  'default_target_attribute': 'class',\n",
       "  'tag': ['AzurePilot',\n",
       "   'OpenML-CC18',\n",
       "   'OpenML100',\n",
       "   'study_1',\n",
       "   'study_123',\n",
       "   'study_41',\n",
       "   'study_99',\n",
       "   'vision'],\n",
       "  'visibility': 'public',\n",
       "  'status': 'active',\n",
       "  'processing_date': '2018-10-03 21:23:30',\n",
       "  'md5_checksum': '0298d579eb1b86163de7723944c7e495'},\n",
       " 'categories': {},\n",
       " 'url': 'https://www.openml.org/d/554'}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mnist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "X, y = mnist['data'], mnist['target']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((70000, 784), (70000,))"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape, y.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 一共有7万张图片，每张图片是28*28像素，所以是784个特征，特征值代表像素点强度，0-255（由白到黑）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "some_digit = X[36000]\n",
    "some_digit_image = some_digit.reshape(28, 28)\n",
    "plt.imshow(some_digit_image, cmap=matplotlib.cm.binary, interpolation='nearest')\n",
    "plt.axis('off')\n",
    "plt.show()\n",
    "y[36000]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "some_digit = X[36000]\n",
    "some_digit_image = some_digit.reshape(28, 28)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAOcAAADnCAYAAADl9EEgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAF/UlEQVR4nO3dv2sUeRzG8Y0EC0kRNFUQEgRjYyH+G0Hs1EbtrBQhWljZpBFEO1tBsdJCRLRMIRZiF7QK4m8MCCvINinUvTpc5jO465pnzetV3sPsDpzvG7gvs070+/0OkGfXdt8AsDVxQihxQihxQihxQqjJlt3/yoXRm9jqH3pyQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQihxQqjJ7b4Bdo779++X+6tXrxq3u3fv/unb2eTDhw8j/fxBeHJCKHFCKHFCKHFCKHFCKHFCKHFCKOecbNLr9Rq358+fl9cuLy+X+4sXL8p9YmKi3HcaT04IJU4IJU4IJU4IJU4IJU4I5SglzI8fP8p9fX19qM9vO+549+5d47aysjLUd4/SzMxMuZ86deov3cmf48kJocQJocQJocQJocQJocQJocQJoZxzhmk7x5yfny/3fr9f7smvZR05cqRxO336dHnt4uJiuR88eHCge9pOnpwQSpwQSpwQSpwQSpwQSpwQSpwQyjlnmMuXL5d72zlm295mdna2cTt37lx57dWrV4f6bjbz5IRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQzjm3we3btxu3p0+fltcO+z5m2/Xdbrdxa/tN3bW1tXJfWFgodzbz5IRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQEy3v/w33cuAOVZ1jdjqdztLSUuPW6/WG+u7t/N3aubm5cn/79u3IvnvMbfkvxZMTQokTQokTQokTQokTQokTQjlKGYG2I4XPnz8P/NnT09PlPjU1Ve67dtX/Pd7Y2Gjcvn79Wl7b5ufPn0Nd/w9zlALjRJwQSpwQSpwQSpwQSpwQSpwQyk9jjsDx48fL/datW43b2bNny2vPnz9f7kePHi33Nuvr643b4uJiee3q6upQ381mnpwQSpwQSpwQSpwQSpwQSpwQSpwQyvucbPLly5fGbdhzzl+/fg10TzuA9zlhnIgTQokTQokTQokTQokTQokTQo3t+5yfPn0q9z179jRu+/bt+9O388+ozirb/vrAtv3Ro0fl3vYe7E7jyQmhxAmhxAmhxAmhxAmhxAmhxAmhYs85r127Vu537twp9927dzduBw4cKK99+PBhuY+zbrdb7leuXGncXr9+XV47Pz8/yC3RwJMTQokTQokTQokTQokTQokTQsUepbx8+bLc19bWBv7sjx8/lvulS5fK/caNGwN/96i1vUr35MmTcq+OSyYn6z8uhw8fLnevhP0eT04IJU4IJU4IJU4IJU4IJU4IJU4IFXvOOUrT09PlnnyO2ebixYvl3vbzlJXZ2dmRfTb/58kJocQJocQJocQJocQJocQJocQJoWLPOdt+ZnFqaqrce71e43bs2LFBbumvOHnyZLk/ePCg3Pv9frm3/TV9levXrw98Lb/PkxNCiRNCiRNCiRNCiRNCiRNCiRNCxZ5z3rx5s9zfvHlT7tXvs25sbJTXtp0ltlleXi7379+/N27fvn0rr207pzx06FC5nzlzZuB979695bX8WZ6cEEqcEEqcEEqcEEqcEEqcEGqi5RWj+v2jbbSyslLuS0tLjVv1Olmn0+m8f/++3Ef5WtbCwkK5z8zMlPu9e/fKfW5u7rfviZHb8g+MJyeEEieEEieEEieEEieEEieEEieEGttzzjbdbrdxa3sta3V1tdyfPXtW7o8fPy73CxcuNG4nTpwor92/f3+5M5acc8I4ESeEEieEEieEEieEEieEEieE+mfPOWGMOOeEcSJOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCCVOCDXZsk/8lbsA/seTE0KJE0KJE0KJE0KJE0KJE0L9B9Qz+ZVDMRRGAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plt.imshow(some_digit_image, cmap=matplotlib.cm.binary, interpolation='nearest')\n",
    "plt.axis('off')\n",
    "plt.show()\n",
    "y[36000]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_digit(data):\n",
    "    image = data.reshape(28, 28)\n",
    "    plt.imshow(image, cmap=matplotlib.cm.binary, interpolation='nearest')\n",
    "    plt.axis('off')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_digits(instances, images_per_row=10, **options):\n",
    "    size = 28\n",
    "    images_per_row = min(len(instances), images_per_row)\n",
    "    images = [instance.reshape(size,size) for instance in instances]\n",
    "    n_rows = (len(instances) - 1) // images_per_row + 1\n",
    "    row_images = []\n",
    "    n_empty = n_rows * images_per_row - len(instances)\n",
    "    images.append(np.zeros((size, size * n_empty)))\n",
    "    for row in range(n_rows):\n",
    "        rimages = images[row * images_per_row : (row + 1) * images_per_row]\n",
    "        row_images.append(np.concatenate(rimages, axis=1))\n",
    "    image = np.concatenate(row_images, axis=0)\n",
    "    plt.imshow(image, **options)\n",
    "    plt.axis(\"off\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 648x648 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(9,9))\n",
    "example_images = np.r_[X[:12000:600], X[13000:30600:600], X[30600:60000:590]]\n",
    "plot_digits(example_images, images_per_row=10)\n",
    "# save_fig(\"more_digits_plot\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 划分训练集和测试集\n",
    "X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 将训练集打乱，保证随机性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 8, 9, ..., 7, 9, 0], dtype=int8)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "shuffle_index = np.random.permutation(60000)\n",
    "X_train, y_train = X_train[shuffle_index], y_train[shuffle_index]\n",
    "y_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([10674, 49104, 55184, ..., 44526, 54715,  1022])"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "shuffle_index"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 先训练一个二元分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([False, False, False, ..., False, False, False]),\n",
       " array([False, False, False, ..., False, False, False]))"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_5 = (y_train == 5)\n",
    "y_test_5 = (y_test == 5)\n",
    "y_train_5, y_test_5"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 使用随机梯度下降分类器\n",
    "- 这个分类器的优势是， 能够有效处理非常大型的数据集\n",
    "- 这部分是因为SGD独立处理训练实例， 一次一个"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SGDClassifier(alpha=0.0001, average=False, class_weight=None,\n",
       "              early_stopping=False, epsilon=0.1, eta0=0.0, fit_intercept=True,\n",
       "              l1_ratio=0.15, learning_rate='optimal', loss='hinge', max_iter=5,\n",
       "              n_iter_no_change=5, n_jobs=None, penalty='l2', power_t=0.5,\n",
       "              random_state=42, shuffle=True, tol=-inf, validation_fraction=0.1,\n",
       "              verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import SGDClassifier\n",
    "\n",
    "sgd_clf = SGDClassifier(random_state=42, max_iter=5, tol=-np.infty)\n",
    "sgd_clf.fit(X_train, y_train_5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ True])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sgd_clf.predict(np.mat(some_digit))   # 使用前面示例的数据预测，结果是对的"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 性能评估"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 交叉验证"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 分层抽样\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "from sklearn.base import clone\n",
    "\n",
    "skfolds = StratifiedKFold(n_splits=3, random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9634\n",
      "0.9644\n",
      "0.95285\n"
     ]
    }
   ],
   "source": [
    "for train_index, test_index in skfolds.split(X_train, y_train_5):\n",
    "    clone_clf = clone(sgd_clf)\n",
    "    X_train_folds = X_train[train_index]\n",
    "    y_train_folds = (y_train_5[train_index])\n",
    "    X_test_folds = X_train[test_index]\n",
    "    y_test_folds = (y_train_5[test_index])\n",
    "    \n",
    "    clone_clf.fit(X_train_folds, y_train_folds)\n",
    "    y_pred = clone_clf.predict(X_test_folds)\n",
    "    n_correct = sum(y_pred == y_test_folds)\n",
    "    print(n_correct / len(y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.base import BaseEstimator\n",
    "class Never5Classifier(BaseEstimator):\n",
    "    def fit(self, X, y=None):\n",
    "        pass\n",
    "    def predict(self, X):\n",
    "        return np.zeros((len(X), 1), dtype=bool)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.913  , 0.909  , 0.90695])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import cross_val_score\n",
    "never_5_clf = Never5Classifier()\n",
    "cross_val_score(never_5_clf, X_train, y_train_5, cv=3, scoring='accuracy')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 虽然识别率达到95%，但实际上如果每次都直接猜测数字不是5，那估计也会有90%左右的正确率，所以这个不能算得上是合理的评估方式\n",
    "- 这说明准确率通常无法成为分类器的首要性能指标，特别是当你处理偏斜数据集（skewed dataset）的时候（即某些类比其他类更为频繁）。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 混淆矩阵\n",
    "-  总体思路就是统计A类别实例被分成为B类别的次数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 也是实现交叉验证，但返回的不是分数，二是每个折叠的预测\n",
    "from sklearn.model_selection import cross_val_predict\n",
    "y_train_pred = cross_val_predict(sgd_clf, X_train, y_train_5, cv=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[53106,  1473],\n",
       "       [  914,  4507]], dtype=int64)"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "confusion_matrix(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 精度\n",
    ">$$ 精度=\\frac{TP}{TP+FP} $$\n",
    ">TP是真正类的数量，FP是假正类的数量\n",
    "\n",
    "- 召回率\n",
    ">$$ 召回率=\\frac{TP}{TP+FN} $$\n",
    ">FN是假负类的数量\n",
    "\n",
    "![](img/3-2.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### sklearn内置了多种分类器指标，精度和召回率也是其中之一"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import precision_score, recall_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7536789297658862"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "precision_score(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8313964213244789"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 到这里再看这个二分类器的效果就没有那么夸张了，只有77%的正确率，80%的5被检测出来了"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### F1分数\n",
    "- 将精度和召回率组合成一个单独的指标，称作F1分数\n",
    "$$ F_1=\\frac{2}{\\frac{1}{精度} +\\frac{1}{召回率}}=2X\\frac{精度X召回率}{精度+召回率}=\\frac{TP}{TP+\\frac{FN+FP}{2}} $$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7906324006666082"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import f1_score\n",
    "f1_score(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- F1分数对那些具有相近的精度和召回率的分类器更为有利。这不一定能一直符合你的期望：在某些情况下，你更关心的是精度，而另一些情况下，你可能真正关心的是召回率。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 精度/召回率权衡\n",
    "- SGDClassifier分类决策\n",
    ">对于每个实例，它会基于决策函数计算出一个分值，如果该值大于阈值，则将该实例判为正类，否则便将其判为负类。 \n",
    "\n",
    "![](img/3-3.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- Scikit-Learn不允许直接设置阈值，但是可以访问它用于预测的决策分数。不是调用分类器的predict（）方法，而是调用decision_function（）方法，这个方法返回每个实例的分数，然后就可以根据这些分数，使用任意阈值进行预测了"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([34425.06990697])"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_scores = sgd_clf.decision_function([some_digit])\n",
    "y_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ True])"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "threshould = 0\n",
    "y_some_digit_pred = (y_scores > threshould)\n",
    "y_some_digit_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False])"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "threshould = 200000\n",
    "y_some_digit_pred = (y_scores > threshould)\n",
    "y_some_digit_pred"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 获取训练集中所有的示例分数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_scores = cross_val_predict(sgd_clf, X_train, y_train_pred, cv=3, method='decision_function')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ -389830.56273013,   188797.40626396,  -406832.76180075, ...,\n",
       "        -192917.80850043,  -242051.00982975, -2047872.98352178])"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import precision_recall_curve"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "precisions, recalls, threshoulds = precision_recall_curve(y_train_5, y_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([0.09124419, 0.0912289 , 0.09123043, ..., 1.        , 1.        ,\n",
       "        1.        ]),\n",
       " array([1.00000000e+00, 9.99815532e-01, 9.99815532e-01, ...,\n",
       "        3.68935621e-04, 1.84467810e-04, 0.00000000e+00]),\n",
       " array([-2581426.29589367, -2578708.02498836, -2578483.36938474, ...,\n",
       "         1781615.03661704,  1795022.68024602,  2035125.9120225 ]))"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "precisions, recalls, threshoulds"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-1200000, 1200000)"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_precision_recall_vs_threshould(precisions, recalls, threshoulds):\n",
    "    plt.plot(threshoulds, precisions[:-1], 'b--', label='Precision')\n",
    "    plt.plot(threshoulds, recalls[:-1], 'g-', label='Recall')\n",
    "    plt.xlabel('Threshould')\n",
    "    plt.legend(loc='center left')\n",
    "    plt.ylim([0, 1])\n",
    "\n",
    "plt.figure(figsize=(8, 4))\n",
    "plot_precision_recall_vs_threshould(precisions, recalls, threshoulds)\n",
    "plt.xlim([-1200000, 1200000])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8927078495123084\n",
      "0.7090942630510976\n"
     ]
    }
   ],
   "source": [
    "y_train_pred_90 = (y_scores > 250000)\n",
    "print(precision_score(y_train_5, y_train_pred_90))\n",
    "print(recall_score(y_train_5, y_train_pred_90))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "def plot_precision_vs_recall(precisions, recalls):\n",
    "    plt.plot(recalls, precisions, 'b-', linewidth=2)\n",
    "    plt.xlabel('召回率', fontsize=16)\n",
    "    plt.ylabel('精度', fontsize=16)\n",
    "    plt.axis([0,1,0,1])\n",
    "\n",
    "plt.figure(figsize=(8, 6))\n",
    "plot_precision_vs_recall(precisions, recalls)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ROC曲线\n",
    "- 还有一种经常与二元分类器一起使用的工具，叫作受试者工作特征曲线\n",
    "- 它与精度/召回率曲线非常相似，但绘制的不是精度和召回率，而是真正类率（召回率的另一名称）和假正类率（FPR） \n",
    "- FPR是被错误分为正类的负类实例比率，它等于1减去真负类率（TNR）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import roc_curve\n",
    "fpr, tpr, threshoulds = roc_curve(y_train_5, y_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([0.        , 0.        , 0.        , ..., 0.98922663, 0.98922663,\n",
       "        1.        ]),\n",
       " array([0.00000000e+00, 1.84467810e-04, 5.40490684e-02, ...,\n",
       "        9.99815532e-01, 1.00000000e+00, 1.00000000e+00]),\n",
       " array([ 2035126.9120225 ,  2035125.9120225 ,  1096511.81564929, ...,\n",
       "        -2578708.02498836, -2581426.29589367, -5541955.6883435 ]))"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fpr, tpr, threshoulds"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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DYxX1S3+C61mmDNnDqeffjp/+9vfuPvuu/n5559p3tyG6Iwx/uHvpDELGCwik4GBwGoReaREm+FAR2CCiCwUkSvL22htOb92u908/PDDpKSksGTJEp588kmioqLKf6MxxviIXyfCVTVdRLoDPYCnVHU3sKJEm2nANH/GVZ2pKu+99x4XXXRRUYHBlJQUqxdljAkIv1+noaoHVXWGJ2H4RLAO5W/bto1evXpxzTXXFBUYbNCggSUMY0zAWBmRasjtdjN9+nTuvvtuCgoKeP755xkzZkygwzLGmCApIxJksxoPPfQQo0aNonPnzqxatYqxY8dagUFjTLVgPY1qIj8/n4MHD5KamspNN93EySefzLBhw2wZrTGmWgmKnkZNt2LFCs455xz69++PqtKgQQOuu+46SxjGmGonOJJGDT225uTk8MADD9CpUye2bdvGLbfcEuiQjDGmTDY8FSDr16/n8ssvZ+3atQwZMoTJkydTp06dQIdljDFlCoqeRk3saNSvX5/U1FTmzp3LW2+9ZQnDGFMjBEXSqCkWLFhAz549iwoMfvnll/Ts2TPQYRljjNeCImlU9wnjQ4cOMXz4cHr06MHGjRuLCgwaY0xNExRJozqbNWsWrVu35q233uLee+9lxYoVVmDQGFNjBcVEeHXtZ7jdbh5//HHS0tL4+OOP6dixY6BDMsaYExIUSaM6UVXeeecdLrnkElJSUpg1axYpKSmEhYUFOjRjjDlhNjzlQ1u2bKFnz54MHjyYadOcQr3169e3hGGMCRpB0dMI9Dy42+1m2rRp3HvvvagqL774IjfffHNggzLGmCpgPQ0fmDhxImPGjOHcc89l9erVjBkzBpfLdq0xJvhYT6OS8vLyOHToEKmpqdx8882ceuqpDB48uNov/zXGmBNhp8OVsHz5cjp37lxUYLB+/foMGTLEEoYxJugFRdLw1/00srOzmTBhAmeddRY7d+7k1ltvtURhjKlVgmJ4yh9+/fVXLr/8ctatW8ewYcN49tlnSU5ODnRYxhjjV0GRNPxxst+gQQPq1avHlClTuOiii6r+A40xphoKiuGpqvLpp59y8cUXFxUY/OKLLyxhGGNqNUsapThw4ADDhg3jkksuYevWrezYsSPQIRljTLVgSaOEmTNn0qpVK9555x0mTJjA8uXLOeWUUwIdljHGVAtBMafhK263m6effppG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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_roc_curve(fpr, tpr, label=None):\n",
    "    plt.plot(fpr, tpr, linewidth=2, label=label)\n",
    "    plt.plot([0,1],[0,1], 'k--')\n",
    "    plt.axis([0,1,0,1])\n",
    "    plt.xlabel('假正类率', fontsize=16)\n",
    "    plt.ylabel('真正类率', fontsize=16)\n",
    "\n",
    "plot_roc_curve(fpr, tpr)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 同样这里再次面临一个折中权衡：召回率（TPR）越高，分类器产生的假正类（FPR）就越多。虚线表示纯随机分类器的ROC曲线；一个优秀的分类器应该离这条线越远越好（向左上角）"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 比较分类器的方法是测量曲线下面积（AUC）完美的分类器的ROC AUC等于1，而纯随机分类器的ROC AUC等于0.5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9588514737174569"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import roc_auc_score\n",
    "roc_auc_score(y_train_5, y_scores)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 由于ROC曲线与精度/召回率（或PR）曲线非常相似，因此你可能会问如何决定使用哪种曲线。有一个经验法则是，当正类非常少见或者你更关注假正类而不是假负类时，你应该选择PR曲线，反之则是ROC曲线。\n",
    "- 看前面的ROC曲线图（以及ROC AUC分数），你可能会觉得分类器真不错。但这主要是因为跟负类（非5）相比，正类（数字5）的数量真得很少。相比之下，PR曲线清楚地说明分类器还有改进的空间（曲线还可以更接近右上角）。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用随机深林分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "forest_clf = RandomForestClassifier(random_state=42, n_estimators=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_probas_forest = cross_val_predict(forest_clf, X_train, y_train_5,\n",
    "                                    cv=3, method='predict_proba')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n",
       "                       max_depth=None, max_features='auto', max_leaf_nodes=None,\n",
       "                       min_impurity_decrease=0.0, min_impurity_split=None,\n",
       "                       min_samples_leaf=1, min_samples_split=2,\n",
       "                       min_weight_fraction_leaf=0.0, n_estimators=10,\n",
       "                       n_jobs=None, oob_score=False, random_state=42, verbose=0,\n",
       "                       warm_start=False)"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "forest_clf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_scores_forset = y_probas_forest[:,1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "fpr_forest, tpr_forest, threshoulds_forest = roc_curve(y_train_5, y_scores_forset)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([0.00000000e+00, 0.00000000e+00, 1.83220653e-05, 1.28254457e-04,\n",
       "        5.49661958e-04, 1.15429011e-03, 2.85824218e-03, 6.52265523e-03,\n",
       "        1.62150278e-02, 4.71243519e-02, 1.67225490e-01, 1.00000000e+00]),\n",
       " array([0.        , 0.26526471, 0.47980077, 0.63290906, 0.73602656,\n",
       "        0.8171924 , 0.87585316, 0.92326139, 0.95222284, 0.97860173,\n",
       "        0.99354363, 1.        ]),\n",
       " array([2. , 1. , 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1, 0. ]))"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fpr_forest, tpr_forest, threshoulds_forest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x19acd8aa048>"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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mfLly/s7LGPO2alTpyxhFBMiQvny5Tl06FChbTOw23UC2HnnnUfFihWZN28eb731liUME1QsYRQfhf27CPikkZZQOmD6NBYvXkzHjh1PLzD47bff0rFjR3+HZUxQ6devH02aNKFFixb06NEDl8tV4O3s2LHjnGJp1aoVLVq0oFWrVrRq1YrvvvvunLZ3NrNnzyYhIaFItp1dYJxtc+F2heIq5n0aCQkJDBgwgHbt2rFt27bTCwwaY4rG1KlTWbFiBTExMSxevNivsXz00UcsWbKEJUuWcO211+b9hgLwZdII/D6NiklUKMZ9GrNnz+aee+7h4MGDPPLII4wbN46oqCh/h2WMT9R85Isi2e6OiXnfAkBVOX78OBEREezdu5dbb70VEeFvf/sbTz31FP369aN27dp8+eWXpKen89VXX7F//3569uxJ6dKlSUxMBODIkSP07duXhIQELr/8cl588UVq165N1apVOf/889myZQsTJkzgxhtv9Cr27du3M3DgQJKTk7nlllt4+OGHWbJkCXPmzGHHjh3Uq1ePp556it9++40hQ4Zw8uRJ7r33Xvr06cPmzZsZOHAgaWlp3HTTTTz++ON07NiRNWvWsHnzZq655hqef/75czq2eQn4K43izO128/TTT1O5cmV+/PFHnn76aUsYxvjAfffdR82aNalcuTJt2rRhz549TJw4kfnz5/PZZ5+drnf8+HGWLVtGnTp1WLNmDc888wwjR45kwYIFJCUlATBhwgRuv/12li1bxrFjx1iwYAGqyltvvcWBAwd4/vnnWbVq1Vlj6dGjB61atWL69OkAPPzww/zrX/9i+fLlLFy4kE2bNgEwc+ZMnn32WZ566ikARo4cybhx41i2bBmTJk1CVfniiy/o2rUrK1eupGbNmgDMnz+fDh068MEHHxR5woAguNJIO1q8+jRUlffee48OHTpQoUIFZs+eTYUKFQptjLQxgcSbK4KiMHXqVL777jsiIyMREcLCwnjiiSeIiYk5nQwA+vbtC0D16tVJTU1l+/btNG7cmLCwMC677DIANm7cyN133w1A8+bN2bRpEzVq1CA0NJSaNWsSGhpKbgu/fvTRR1SrVu10edOmTTRv3hwRoVmzZmzevJn4+HjuuOOOM25zsGXLFsaNG4eIkJ6eTkJCAr1792bkyJG0a9eOm2++uVCPmbeKz9m2gDQ9hPRisorIzp076dixI7179+bVV18FnFFSljCM8b0hQ4bwxhtvkJ6ezuTJk3n00UeZMWPGGaOJoqOjz3hP9erV2bBhA+np6fz6668A1K9fn5UrnRuIrly5kvr1659TXPXq1WPlypWoKqtWraJu3boAxMTEnFHv0ksv5T//+Q9Llixh2LBhREREsGTJEkaPHs2CBQt49tlnT3fylypVipMnT55TXN4K+KQRXuE45Sr6t0/D7XYzbdo0GjRowHfffcfUqVMZPXq0X2MypqSLj4+nTZs2fPLJJ/z973/n7rvvpnPnzpQuXZo9e/bk+J6RI0cyfvx42rVrd3o16UcffZQPPviAa6+9lri4ONq3b39OcT3zzDOMHTuWq6++mg4dOlCnTp0c602cOJFBgwZx1VVXsX37dqKjo6lduzZ9+/bl6quvpmPHjqc/kPbp04dBgwZx5ZVXkpycfE7x5cXn99MobMXhfhqPP/4448eP54YbbuC1116jRo0afovFGH/btGnT6U/PpnjI6XdS0PtpBHyfhutoaY4d9f1EIpfLRUJCAhUrVuSee+7h4osvpnfv3japyRgT1AK+eYr0ENxu356o16xZQ/PmzenevTuqynnnnUefPn0sYRhjgl7AJ43wCseJL++bPo1Tp04xevRorrjiCvbu3cvw4cMtURhjSpSAb57yld9++42bb76ZzZs3069fP55//nnKlSvn77CMMcanAj5puI5E+6RPo2rVqlSpUoUpU6ac8+gJY4wJVAGfNFBxHkVg4cKFTJ48mTlz5hATE8M333xTJPsxxhSuEydO0KtXL44cOUL16tUJCQlh7dq1hIWFMWTIEAYNGkRKSgr9+/fnjz/+4NJLL2XGjBn+DjsgBH6fRvnjlC1XuH0aR44coV+/fnTo0IFdu3addUy3MaZ4euedd2jRogXffvstkZGR/Pnnn7z88sssXLiQJ554gnXr1vHOO+9QoUIFli1bRmpqKsuXL/d32AEh4JNGYfv444+pW7cu7733HqNHj2bNmjVceOGF/g7LmIDVqhX85z/Oc5fLKb/7rlM+edIpf/ihUz52zCl/+qlT/vNPp5yxXNT+/d7t8/zzz2fWrFls3bqVGTNmULFiRQDKly/PTTfdxNKlS1myZAmtWrUCnPWlzjbJzpwp4JunXIejSUwonOYpt9vNs88+S7Vq1Vi4cOHptWeMMYGlU6dOJCcn07VrV1q3bk16lrWGypcvT0JCAocOHaJMmTI8++yzfPjhh4wZM4YuXbr4MerAEPBJ41ypKu+88w433ngjFSpUYM6cOVSoUIGwsBJ/aIwpFEuWZD4PDz+zXLr0meWyZc8sV6hwZrlKFe/2uXXrVjp06EC3bt3o1asXH3zwAUOGDAGc5udq1apRtmxZkpKSePjhh4mNjeX48eP5+8FKqIBvngovf4IycQVbCmXHjh3ccMMN9O3b9/QCg1WqVLGEYUyAmzFjBrNmzSI0NJQGDRpQxZNtEhISmD9/Pm3atOGaa65hwYIFAKxdu9af4QaUEnl2TE9PZ9q0aTz22GOICNOmTTu99LExJvCNGDGCnj178uabb1K2bFlatmzJfffdR2RkJJMmTaJOnTrUqFGDPn360LJlS9xuN9dcc42/ww4IAZ80XIdjSDqWvz6NcePG8dRTT9GhQwdee+01qlevXkTRGWP8oWrVqnkOkS9VqhQfffSRjyIKHgGfNBAFL3KGy+XiyJEjVK5cmXvvvZc6derQs2dPWwbEGGPyIfD7NMqdILZM7n0aP/30E82aNaNHjx6nFxjs1auXJQxjjMmngE8auUlOTmbUqFE0b96cQ4cO8dBDD1miMMYHAv0+PcGksH8XAd885foz5z6NLVu20KlTJ7Zu3cqAAQN47rnniIuL80OExpQsUVFRHD58mPLly9uHND9TVQ4fPkxUVFShbTPgkwahbkJyuF6qVq0a1atX59VXX6Vt27a+j8uYEqpatWrs3r2bQ4cO+TsUg5PEq1WrVmjbC/ikER5/kuhY5/Jr/vz5TJ48mblz5xIdHc3ixYv9HJ0xJU94eDi1atXydximiPi8T0NE3hCRFSIy5lzqZJWYcIQ+ffpw4403snfvXvbt21d4ARtjjDnNp0lDRLoCoaraAqgtIhcXpE5WqQdLM7hTZ95//33Gjh3Lzz//TO3atYvmBzDGmBLO181TrYCZnueLgGuBrQWok0mTqVClErNmzqJRo0aFGasxxphsfJ00ooGMm1McAZoWpI6IDAYGe4op27ZsXd+4ceNCDjUgVQD+9HcQxYQdi0x2LDLZsch0aUHe5OukcRwo5XkeQ87NY3nWUdXpwHQAEVmtqs0KP9TAY8cikx2LTHYsMtmxyCQiqwvyPl93hP+E09wE0BjYUcA6xhhj/MDXVxqzgWUiUhXoCNwuIuNVdUwuda7ycYzGGGPOwqdXGqqaiNPRvRJoraprsyWMnOocy2Oz04sg1EBlxyKTHYtMdiwy2bHIVKBjIbZGjDHGGG8F9YKFxhhjCpclDWOMMV4LmKRRFMuPBKq8fk4RKSsi80VkkYjMEpEIX8foK97+zkWksois8VVc/pCPY/GKiHTyVVz+4MX/SLyIzBOR1SLymq/j8zXP3/+yXF4PF5HPRGS5iNyV27YCImkUxfIjgcrLn7MnMFlV2wP7gQ6+jNFX8vk7f47M+T9Bx9tjISItgSqq+plPA/QhL49Fb+A9z5yNWBEJ2rkbIhIPvIUzcfps7gN+UtVrgO4iEnu2igGRNMh5aZGC1AkGrcjj51TVV1T1S0+xInDQN6H5XCu8+J2LSBvgBE4CDVatyONYiEg48DqwQ0Ru9l1oPteKvP8uDgMNRCQOuAD4wzeh+UU6cBuQmEudVmQes6XAWZNooCSN7EuLVC5gnWDg9c8pIi2AeFVd6YvA/CDPY+FpmnsceMSHcfmDN38XfYCNwDPAlSJyn49i8zVvjsV3QA1gOLDJUy8oqWqiF1MXvD6vBErSKJTlR4KEVz+niJQDpgK5tk8GOG+OxSPAK6qa4LOo/MObY9EEmK6q+4F3gdY+is3XvDkW44C7VfVfwGagv49iK668Pn8GyonVlh/JlOfP6fl0/RHwqKru9F1oPufN7/x64F4RWQJcJiIzfBOaz3lzLH4HMu4b0AwI1r8Nb45FPNBQREKB5kBJn7Dm/flTVYv9AygDrAUm41xKNgbG51GnrL/j9uOxGAocBZZ4Hrf5O25/HYts9Zf4O2Y//13E4nyYWAqsAM73d9x+PBZXAhtwPmF/CcT4O24fHJclnq9tgGHZXqvhOR5TgFU4Awly3E7AzAj3jABoByxV5/K6QHWCQUn5Ob1hxyKTHYtMdizyz7Pe37XAQs2lDyRgkoYxxhj/C5Q+DWOMMcWAJQ1jigERCRUR8XccxuTFkoYpMUSki4hcfZbXoopyuRURuUFEHspSflpEFmapMhb4zDOax5vt9fTMwzHGp3x9EyZj/Olx4GsRmYwzzDLDo0BN4A4RUZxx6veq6msAItIEOEXewzJDgSjgV1VNzfbaMeAxEamkqqOAFCDZs/0bgZHAnaqanvVNnlncYUCKqrqzvHQXcBLolKVuKBABuFU1JY9YjSkQSxqmRBCR6kBDoDPOcMvWqrpERP6Dc0K+G7jbU3cJzlDMDCtxTvJZT9oROAki69IMIZ7vX4pnDoSIRAIC/AjcBEzJYV2fB4GhqpqxuGSIqp7yvHYb8DKQLCIZiSAcJ4GliciOLNsJB0rjrLP1lFcHxph8sqRhSoq+OAuy7fFcTeTl9Cd+VY3M/qKI9AP+qao189jOJGBEtu+dTjRZYmkrIm96ns8Buniev+/5ukBV//S8530gzlPnMmCVqro9C/PdhLMSgDFFwvo0TNATkTBgIM7VQoZvPCfsvkCUiCwWkSQRScAZq57biqD58U+gPBCuqgJcBOwDfsNJDnWBuTjNYyE4Vy93ZHl/KeAq4DcRaSciHwNVcJbBeAz4FujoWc56NXCeZxvGFAm70jAlQX+cfoqsWqvqkoyCiEzBaX5K0RwmL4nICOCkqr6enx1rljWvPKvtpROr5gAAA2hJREFU/tfzSMJZC+o4ToJaDzykqtOzvf84MExEpgOpQDecK5UvcRLKLar6haffpa+qzs5PfMbkl11pmKDm6cuYCLxyltejRKQSzgqwdwB9RaSfiDTIVrUd8Lds3wsRkbgsjwoicl4O+2jsaVL6DHhaVR/E6fuIVNXdnm2PA6Z5boRTKYdQTwAJOP0ybXD6SXoB54tIU5ylvi+yYbumqFnSMMFuL84J+ads389onkrGuZ/Cszg3r+qCs2ZR9hv3pJGln8PjApw1vjIeh4D5WSuIyBXAzzgd1Jep6pQscSWISKg6JgMdgepk+78UkY7AD0BbnKuSOTijpz4BbgD+D6d561HgYxEpnddBMaagLGmYoKaqaar6cg4vtfb0MZTCOanPA15W1S44zUCrvdj8TlWVjAfO6KXs80DWA/VV9WZV3ZrttSvJMiJLVRd7vnd65JaIPAa8jXMltAlnocFY4CWcYbzNgfpAU5yVaxvhjLgypkhYn4YpsTxNORnNOYuBDiKyDqfvIt93clPVNJwrkqzmA9fl0mrkPstrIiIhwAfATFX93fPN5jjLVr8BbFPV+0XkSuAPVd0nIpcB6rmCyX5lZMw5s6RhSqpvsjyvBXyKMytbgWmFuJ8bPds8PTlPRC4FfsG5U9pnqvpARmXPPI2MIb4NcZrVUkUk+2TBaJyE0y/LeyFzrsgNOCOrjClUljRMSZUxuS8cSFNVFZFFOH0FVQprJ6p6MmvZs/z0ezhNTk8A33uueB5V1WTPTPJUz3vXcpb/URGZDexQ1fsLK1ZjvGF9GqakCCXz7z0845uq6gJiRORxoAPOzXv+T0QqexYRvExE6uIM2S0rInVEpA7OfIjwjLLnUc9T/6LsOxeR8iLyAM4VxiZguKruBVrg9EWsF5H7RKRs0R0CY86dXWmYkiKKzElvp2d4exYwXIAzIqkpziioF4GNOJ3KP3DmulMrs203ezncs71unu3fjzOUtwnOndGGqOqsjMqefohWwGCciYCTReRDVe2Vx8+TNQka4zN2EyZT4olIZVU9kO17FTKW7TjHbV+Dc5/y2Z7mptzqRuIM+d2rqsvyqPslsF1VB59rjMbkhyUNY4wxXrPLW2OMMV6zpGGMMcZrljSMMcZ4zZKGMcYYr1nSMMYY4zVLGsYYY7z2/xd18q1AjInjAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_roc_curve(fpr_forest, tpr_forest, label='Random Forest')\n",
    "plt.plot(fpr, tpr, 'b:', label='SDG')\n",
    "plt.legend(loc='lower right')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9930085672402169"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roc_auc_score(y_train_5, y_scores_forset)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train_pred_forest = cross_val_predict(forest_clf, X_train, y_train_5, cv=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.9859781882929001, 0.8171923999262128)"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "precision_score(y_train_5, y_train_pred_forest), recall_score(y_train_5, y_train_pred_forest)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 多类别分类器"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 一些算法可以直接处理多分类问题，比如随机森林分类器和朴素贝叶斯分类器\n",
    "- 严格的二元分类器（比如支持向量机和线性分类器）可以通过不同的策略实现多分类的目的\n",
    ">- 例如， 要创建一个系统将数字图片分为10类（从0到9），一种方法是训练10个二元分类器，每个数字一个（0-检测器、1-检测器、2-检测器，等等，以此类推）。然后，当你需要对一张图片进行检测分类时，获取每个分类器的决策分数， 哪个分类器给分最高，就将其分为哪个类。这称为一对多（OvA）策略（也称为one-versus-therest）。\n",
    ">- 另一种方法是，为每一对数字训练一个二元分类器：一个用于区分0和1，一个区分0和2，一个区分1和2，以此类推。这称为一对一（OvO）策略。如果存在N个类别，那么这需要训练N×（N-1）÷2个分类器。对于MNIST问题，这意味着要训练45个二元分类器！当需要对一张图片进行分类时，你需要运行45个分类器来对图片进行分类，最后看哪个类别获胜最多。OvO的主要优点在于，<mark>每个分类器只需要用到部分训练集对其必须区分的两个类别进行训练。</mark>\n",
    "\n",
    "- 有些算法（例如支持向量机分类器）在<font color='red'>数据规模扩大</font>时表现糟糕，因此对于这类算法，OvO是一个优先的选择，由于在较小训练集上分别训练多个分类器比在大型数据集上训练少数分类器要快得多。但是对<font color='red'>大多数二元分类器</font>来说，OvA策略还是更好的选择"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 自动使用OVA策略"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SGDClassifier(alpha=0.0001, average=False, class_weight=None,\n",
       "              early_stopping=False, epsilon=0.1, eta0=0.0, fit_intercept=True,\n",
       "              l1_ratio=0.15, learning_rate='optimal', loss='hinge', max_iter=5,\n",
       "              n_iter_no_change=5, n_jobs=None, penalty='l2', power_t=0.5,\n",
       "              random_state=42, shuffle=True, tol=-inf, validation_fraction=0.1,\n",
       "              verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 这里实际是使用了OVA策略（除了SVM，他是使用OVO策略）\n",
    "sgd_clf.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5], dtype=int8)"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sgd_clf.predict(np.mat(some_digit))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 训练分类器时，目标类别的列表会存储在classes_这个属性中， 按值的大小排序。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5\n",
      "[[-116296.13858718 -475078.95433654 -227067.06152069 -181442.14397974\n",
      "  -461613.7035882    89483.86549766 -756244.49268351 -349622.50236668\n",
      "  -478951.34839848 -592026.06904925]]\n",
      "[0 1 2 3 4 5 6 7 8 9]\n"
     ]
    }
   ],
   "source": [
    "# 查看10个分类器的分数\n",
    "some_digit_scores = sgd_clf.decision_function([some_digit])\n",
    "print(np.argmax(some_digit_scores))\n",
    "print(some_digit_scores)\n",
    "print(sgd_clf.classes_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 强制使用OVO策略\n",
    ">- 如果想要强制Scikit-Learn使用一对一或者一对多策略，可以使用OneVsOne Classifier OneVsRestClassifier类。只需要创建一个实例，然后将二元分类器传给其构造函数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.multiclass import OneVsOneClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "OneVsOneClassifier(estimator=SGDClassifier(alpha=0.0001, average=False,\n",
       "                                           class_weight=None,\n",
       "                                           early_stopping=False, epsilon=0.1,\n",
       "                                           eta0=0.0, fit_intercept=True,\n",
       "                                           l1_ratio=0.15,\n",
       "                                           learning_rate='optimal',\n",
       "                                           loss='hinge', max_iter=1000,\n",
       "                                           n_iter_no_change=5, n_jobs=None,\n",
       "                                           penalty='l2', power_t=0.5,\n",
       "                                           random_state=42, shuffle=True,\n",
       "                                           tol=0.001, validation_fraction=0.1,\n",
       "                                           verbose=0, warm_start=False),\n",
       "                   n_jobs=None)"
      ]
     },
     "execution_count": 110,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ovo_clf = OneVsOneClassifier(SGDClassifier(random_state=42))\n",
    "ovo_clf.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5], dtype=int8)"
      ]
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ovo_clf.predict(np.mat(some_digit))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "45"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(ovo_clf.estimators_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 随机森林直接可以实现多分类，无需OVO或者OVA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n",
       "                       max_depth=None, max_features='auto', max_leaf_nodes=None,\n",
       "                       min_impurity_decrease=0.0, min_impurity_split=None,\n",
       "                       min_samples_leaf=1, min_samples_split=2,\n",
       "                       min_weight_fraction_leaf=0.0, n_estimators=10,\n",
       "                       n_jobs=None, oob_score=False, random_state=42, verbose=0,\n",
       "                       warm_start=False)"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "forest_clf.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5], dtype=int8)"
      ]
     },
     "execution_count": 122,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "forest_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0. , 0.1, 0. , 0.1, 0. , 0.8, 0. , 0. , 0. , 0. ]])"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "forest_clf.predict_proba([some_digit])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 评估分类器，使用交叉验证"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.86082783 0.82689134 0.86858029]\n",
      "[0.91666667 0.91499575 0.91928789]\n"
     ]
    }
   ],
   "source": [
    "print(cross_val_score(sgd_clf, X_train, y_train, cv=3, scoring='accuracy'))\n",
    "print(cross_val_score(ovo_clf, X_train, y_train, cv=3, scoring='accuracy'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 貌似SDG通过OVO策略准确率高好多"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.93931214, 0.94229711, 0.94139121])"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cross_val_score(forest_clf, X_train, y_train, cv=3, scoring='accuracy')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 可以通过简单缩放提高准确率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "scaler = StandardScaler()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train_scaled = scaler.fit_transform(X_train.astype(np.float64))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0., 0., 0., ..., 0., 0., 0.],\n",
       "       [0., 0., 0., ..., 0., 0., 0.],\n",
       "       [0., 0., 0., ..., 0., 0., 0.],\n",
       "       ...,\n",
       "       [0., 0., 0., ..., 0., 0., 0.],\n",
       "       [0., 0., 0., ..., 0., 0., 0.],\n",
       "       [0., 0., 0., ..., 0., 0., 0.]])"
      ]
     },
     "execution_count": 128,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0., 0., 0., ..., 0., 0., 0.],\n",
       "       [0., 0., 0., ..., 0., 0., 0.],\n",
       "       [0., 0., 0., ..., 0., 0., 0.],\n",
       "       ...,\n",
       "       [0., 0., 0., ..., 0., 0., 0.],\n",
       "       [0., 0., 0., ..., 0., 0., 0.],\n",
       "       [0., 0., 0., ..., 0., 0., 0.]])"
      ]
     },
     "execution_count": 129,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_scaled"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.91126775, 0.90944547, 0.90928639])"
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cross_val_score(sgd_clf, X_train_scaled, y_train, cv=3, scoring='accuracy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.91666667, 0.91499575, 0.91928789])"
      ]
     },
     "execution_count": 131,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cross_val_score(ovo_clf, X_train, y_train, cv=3, scoring='accuracy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.93931214, 0.94229711, 0.94139121])"
      ]
     },
     "execution_count": 132,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cross_val_score(forest_clf, X_train, y_train, cv=3, scoring='accuracy')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<small>这里只对SGD的准确度有所提高</small>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 错误分析\n",
    ">先试看混淆矩阵，查看效果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train_pred = cross_val_predict(sgd_clf, X_train, y_train, cv=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[5507,    3,   18,   20,    5,   58,  109,    9,  156,   38],\n",
       "       [   1, 6315,   39,   22,    8,   43,   32,   19,  194,   69],\n",
       "       [  46,   33, 4932,  152,   53,   28,  244,  138,  287,   45],\n",
       "       [  36,   13,  155, 4810,   13,  155,   62,   85,  592,  210],\n",
       "       [  12,   19,   32,   26, 4650,   19,  174,   55,  184,  671],\n",
       "       [  79,   21,   31,  308,   57, 3834,  183,   47,  667,  194],\n",
       "       [  22,    8,   22,   15,   10,   98, 5684,    9,   45,    5],\n",
       "       [  24,   12,   51,   22,   26,   12,   13, 5579,   69,  457],\n",
       "       [  30,  105,   85,  250,   42,  288,   96,   86, 4400,  469],\n",
       "       [  21,   16,   20,   66,   78,   22,   12,  195,  104, 5415]],\n",
       "      dtype=int64)"
      ]
     },
     "execution_count": 135,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "conf_mx = confusion_matrix(y_train, y_train_pred)\n",
    "conf_mx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x19ae64c0358>"
      ]
     },
     "execution_count": 146,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用matshow()来查看混淆矩阵\n",
    "plt.matshow(conf_mx, cmap=plt.cm.gray)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    ">混淆矩阵看起来很不错，因为大多数图片都在主对角线上，这说明它们被正确分类。数字5看起来比其他数字稍稍暗一些，这可能意味着数据集中数字5的图片较少，也可能是分类器在数字5上的执行效果不如在其他数字上好。实际上，你可能会验证这两者都属实。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 首先，你需要将混淆矩阵中的每个值除以相应类别中的图片数量，这样你比较的就是错误率而不是错误的绝对值（后者对图片数量较多的类别不公平） "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {},
   "outputs": [],
   "source": [
    "row_sums = conf_mx.sum(axis=1, keepdims=True)\n",
    "norm_conf_mx = conf_mx / row_sums\n",
    "# 用0填充正确元素，错误分析更关心错误\n",
    "np.fill_diagonal(norm_conf_mx, 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x19ae6753b00>"
      ]
     },
     "execution_count": 159,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.matshow(norm_conf_mx, cmap=plt.cm.gray)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    ">1. 数字8和9偏亮，说明会经常与其他数字混淆\n",
    ">2. 数字3和数字5比较容易混淆"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "metadata": {},
   "outputs": [],
   "source": [
    "cl_a, cl_b = 3, 5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_aa = X_train[(y_train == cl_a) & (y_train_pred == cl_a)]\n",
    "X_ab = X_train[(y_train == cl_a) & (y_train_pred == cl_b)]\n",
    "X_ba = X_train[(y_train == cl_b) & (y_train_pred == cl_a)]\n",
    "X_bb = X_train[(y_train == cl_b) & (y_train_pred == cl_b)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 167,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAccAAAHBCAYAAAAcpXCvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOydd0BVZf/AP3ewZQkiiCgiw71wobnSMnPPMjX1TU1NtDS19cts+JZ752xYpmblNrPULPfeCCLuvRdDuPf+/vhyL1sRuBffej7/cO8Z9zycc57x3RqTyYRCoVAoFIo0tIXdAIVCoVAonjbU5KhQKBQKRSbU5KhQKBQKRSbU5KhQKBQKRSbU5KhQKBQKRSbU5KhQKBQKRSb0j9r5nLazivNQKDLxu3GpprDbkBdUf1YospJTf1aSo0KhUCgUmVCTo0KhUCgUmVCTo0KhUCgUmXikzVGhUCgU1kVjZ4/jH54A/Bz8KzqNFoPJCMCOJBjdvbcct+1gobXx34iSHBUKhUKhyMQ/W3KsXZnYwfIvbm80HR+dC4BlVWZm2u0g7DQGAL6e1Aqvudtt287HoPNwR+PpQXIJWV3eff8+f1ddYtlvp9HxwvGWAETH+FNu1n0AjAeO2b6xCkUhcnJcBOPbfUczp+sAOGnssxxz1RAPQJ9G3Ug5dcam7cuOhObVWBX8JQBGwGgyWPbVdoDY13UAhGyzccO0OnSe7lk2mx4mY7x3L8M2naeMTYZbtwq8Gbd7RHC1UTIAH9RfTS+3i3JNjZYya/vg/6vcH9dfD2OMjy+w62oeVZWjIFy/z4yuxzc9pgFQy0GDEflJLfK5/ObXAPBZ6Yjn1vMApJw7n9/LAtA7+gwdi1x/onOuGBJoM2Y4AMVmFd4kqfMqStR/ywLQtdZORvvsx4gx22O1aDPsW3LPD4DFDapjuHYt323RuroCELIpkUl+OzPsi7xYD4DftlQj7NMYMEjHNty+k+/rPgpdcR/O9QwGYEPkOC6myCLonVMdWBO2Cp1GlCIGk5HyC94AoOyiWxgPHc/3tVUox5NhbFAd3fbDAJhSUqxyDV35EABiXvOi+E4TLhcSAUj0cchw3NXqeo72mQ5AuYVvEDSiEPt4sWIAVFt/hUBHGaeWXKhJTa+zfOqz13LcriR53T4OqmHT9l1+sx57hk/Lsn3Zg6KM3Nopw7YDz8k97VIyosDbcXJCXV5sJPfDaMqo7PSwi2dUsQMAlNvUh9B+0XLcE0ySOfVnq0+OrY7eop9HLJBxEDd/1qZqdo0YWf3AC4C9DwIt5+/rVxXT7sN5uva1/hHs/D95aEmmZJbck9+ddbIh9/Z5WY7zr3eBRWGLAPDUOpJkklXKc8PfxG3RjjxdO7/E/VCNI43mWr6nv3f7k7QMGB8JgPN12XatfQIAhxvOs5xTfeYQAj7L33JTF1qW11b/DkAbl5xXhebFTkzyQwBabRpEmYWyz+6PvTme90RtCQki6IcLAJRwuM1wr+wl49jkJH6+KwNJhMsJGjpKmz69XoUdVe3y3Q41OaahCa9o+XymtTtJXrI4+ui5n/HSiwajlsMN9iUVBeBsshffv9sKp+W7CropueJm7wh2fDoDgPAvBlF8qq3Fsaxoq5ZHk5y6qDwWg/sWLxaWWW/ZXxiTo9bFhea7LvCGx8knOq+Vf7iVWpQ9uuI+tPvzCAC++tvMbtwYgJQLF3P9GyrOUaFQKBSKXGJ1m+O3E19kaqh8dripofRC0fHfC/fnZjk92giRRkZVWEPHIncBaOOyHzuN6JF7T3PnYt28Xdv3h6M0uT4QAF2iCcfVslotSgxFMx378vND5O+UtfR2Oydt7HwPt0V5u3Z+qeh/KcP3UVers252fQCKb7mFz5GMK173fWUAWLbGh/ZFrgKQEJB/FdbdKt6PlBgzE2onNp6Y5+ewtaFIaZ936Ypp79F8teP0ZxH0bL0xW2lx9LVq/LK0geW72xkj7t+LxL+xWS+85s4EoIv7HnZQ8GqffwsaO3u0IYGc7Cpal+Yt9jDJ7zvL/hvGBB6maqLeu/Aifx+Tjh+4VMPV6vIuHBo0nVemT6Xj8jx26nzy3OCtFpuj79Y7PA0pg4wHo9D7Fgfg6qB6zC01FnCy7O/+++sAhLLbZm3SODrkWmrclaRh0IRBAPhgW0k8+t0gAu02ATC+xytoLhScR6/VJ0ev+dvxSvfdPFw7nb+A/wrQB5QE4KOprWhTWzqaESPJqW/t3yeDKcv+PF3bcPcuLj/tfPyBgN36PQBMONSM3s98DcCAcn+xMkPrbUfyS1AlcjAARc5A8R+PUey22Eeyszyeayd2RvPECFB0ny7f7XjY+2aujkvBwP4kLeHpTDz1HUU9neDngmMer3/xbbFpHuo1BS1aFt2TQWTUnx0oN1TUKSaDgYCk7Dul3R97OZ0izzDI7snszwrh/LvyDJp23M0kv8WW7UMuRlD+LwkzcN3kjO+aM+nUWXcJRfrU9X4RjOz5IyDOME2+HkFpGw6iZtve9W88GOXzA3U/GwGAz95CVqlqpX/qinoQ9V4gANEdpwFOFtPOknuBhM0Vk4lNJ/LkFDYkONPUKWfbXefYFwFIGO6Dzy4bPk83NwCiP67Asc7TqLhYTExltxesCUypVRUKhUKhyEShhXLc7VqXa60TeavaBgD6uZ9OU6WebczuZZUBCFt4Buv4t2XEIqE8MwXzmmHyylYEUTjebCmXrxD4/hXLd8Mjjr3dI4LXeq8FxHGn37nGgEibjzovNxiXeUM1+fzFjYqcivdm0/Ew+f3f0pxbtAYocjYepy+kzUuD11r2netkIGR13q5vf0/WyzcNSXjrnBj1ZwcAQvvvysF3NyN6/xI4a/Kn0v23oS/pT9xrpQGY/upsqtpvBaBTVDcqrhlE0I83ADDGnqZMUpoaK30/1YUEcXmCvB/TKs1gwvnmAMyd3JHSv9hOytD7FidkjbT3x+KrqPvZUHxmFr4TzqWh9bhXSRzFYprPBtZn2D/w3PMAXIm4CxyxcetE6zZs/muEt5FrP+t5nG6uGU09NyYHAuC8K3fauYIgvn0dqr+/D4A3PeZTcXEkZYdZx2nSJpNj3Fix83R+bqtl22ifGRm8VRse6oLLWImpsb98D/8oeYGtPjFqNGiqVeDz/l8BMrnMuC0hFMGfHMrVAFyYXH6zHr37rmWAxwkAup16gQed5LEabl951Km5wufn4zS7PAAAlx0nMVy/QQhZvU81dvbc6VwDF03WO+axM2usWW7xni2LkxftRhBf3ETYaLG75FbFFP1maZo4iVt/VHKem/GvQF9GJsSay2NZ6b0KgJ5nnuXw0goA+E7aRmlOZ1hwaRxEj64JKUNcV096tBb7zzMuy/numiw43498HYc18tycyX9oUW4w2/DKrr5JPVfpG636RuLza+FPjACh7WNYFPRbtvsW3PXn2uslUr/dtXpb7nQT+2+yS5rTpvec7ZT87zauTXEGYNyQTnQblBbW8Wu8K24HLgM2GKOBxNa1AZg8cRoXUjwAsTEWtCo1PUqtqlAoFApFJqwiOd7tKisRs9q0n7vEGppj4cyfZ90OZul7om5xW5EW95RfVWB2JL1Yi7MtZS3gEXDbsl2nNbGt+oIMx34bK+33eZD/gPGCQFcxDKOjHt2tB7Ih6SHnZ4iU/Xv4ODy1jnQ79QIAD15yIOVy7mN8Hofh1i2Ll2+2z6W2qL+bzN/B0KIzMuzamyR/ffbcz7czgc90WfHn53c8tClcfz0C52si3Tr/Yjt10NOOPrAU9VfI+z7SK4qIAy8B4PWuDt9D2Utb8e3rEP6BaBEm+P5AgukhdWYOBeD3ww1xXCXvjYMNvSwB7r1Ul9ojxBko9l4xYvqLGcBhj23bkRMJbWvzXeAkSOemNvFmOQC+XfIcZebHYbxkm7En5Y9S/Bo2EYAi2jRvukVDi2NMJzs1clpPeg/aYct6EnTKNiankwur8/sz0sbntg4ibLg4HRakZ2p2FMzkWLsy4bPTGjraRwZJs9o0LXtLxs/9PGL5ydi8QJqQE9pqohL6+stJlNQ7PeZooUUpCRdYPfQZSkzbgyk1sN2WXBxej5d6bASgtvMvuGkTuZAiKZoSTXZ0KnI59Uh7widGErBQ3K4LcmLMDm2lclRaIFkoKjpfoLKDDIDV7PUZVNCHHhoY8Za4dzvtLpyA78z46ZzY8eF0jj4URdA7gzqg6yZTfsqly4869R9PYtlitHcTT9Ry3w2j7AcykRgzZbS53SOCB+1F1ber9jR+ui/qv4rz3yBo4TVKRltXbakr7gPAvXplMmy/WU78FSq2jGZZ4FRqzXwTgFJTDmJ6kNFWVtgYHLR4atMmxmSTgR/mPwdAwORtNlFTmmlYLDbDpGimm+tViyAjZBw7A9ckWrVduoqyoBmxciml9Vvo01tC7cpu3Guz+1Mgk2NMPwfW+kgKHyMmtIjuetbtYGYvaGk5zv+LtI4TNzaCDS+PY9xUmUg/in0FQ9SJgmhOBq7VEgkrtxMjwGgfCR0ZPWw/K/t7Mr+BSJKGK1cfdVqBcPlNsdNsGDwOd22arU6LluoON7I9x2+C7TpUqa/OMKb4nnRbsg8XWXm3Ok4rCn9S9N9sIKazLG7MMZgV7eW1XxW2kvfW1ATgWMfST0WezcJCv2Evw57vAUBQzPYMw+KDjnUAKDU0hpWBU9mSKAN7pV8iKfexZL8qfX27VTQ+mYkaHQhATOuZlnHGmEmfsCnBxaJi0Hp6YHzwwAYtyz0eW88y+lo1S9qz+6ZkfCc/HbbQ3LDwnh/2525Zdcw53l/sivUdk3k2chjOG22v5VE2R4VCoVAoMlEgkmOpFVrCnCSBuF2ME/5/ichtvzcW/7vZr4iCfroPL2dNJFvQFF8VB8Bb/eoxqUTWtjQ4+BK3d/tgDJM8kP0rbSHSM02CbeNyi7/XSiB8dM9yGI9YzxagLx3AuqFjAfDUZpR0jRjZnpim/qjuIKthZ409uk0lMLWRLPmZs+UXNCUccpdQfKTXfqot7gNA8Kh4DNGx1mxWjjiu3sWIA6lJknVaLrQNoE530QxM999ikYK7LvDiXoOcfuXfgSEma0aUmDm12Nh8AgC7k/ypMX0IpdZIfwg5tNMm0mJ6Qr4TLUDdfYPoEvkHAD9NbMbNqqmiolcSr1Xdxk+vjwdA199E58lSSMB3yk4w2rrFWUm5cJHj94qD5CagiMaO6/3Eo997jm1Dx649dOV8iiQZKKl34pJBPrunJigoopExR6fR8trZZwA4X/c+cNqq7Sp6IHVe6ABXa2gJ/MWql8sWqycez4kH64LYVHkpo65WB+Bg6wBSzl+w1uXQ6PUYIsR5RLcrLQWZ6eFDSHcPNHo9phrlAYh92YXjL6U5mdSYHEmJcdZVf9zsLZ2k1ZubM2xfNb1RhlJap8bIcTt7TKCI1oHK8yRLROlR1muftmp5Rv6yhAaOaQqVC6mpuIpq9RnKA6Uv2Npo8ABcfn56nF8S2opb+IaZX1q2RSUn03+k2KlclzzaPfyfnnj84Qu1GDRVSqK1c7lNpW09AfCfaUeiV1psq8v5BB6UzN5cUWTVAUxJSfltcha0LlJ27sScUHxWysD9qOd1aWg99g6TEISwZQMJGbznqZggXf/2zhDKUW6pVI4JfrNwCh2AxHr7TxMHq+RnKvHA144Jn0jqxdoOJjYkSFjHlI4dMB6MsmpbzDbHYSt/IlB/h7YzJatRetNcQaESjysUCoVCkUtsLzmmuv6vXvYNRoyETxUvJGusCPKLPqAkQzb9li6IPJk33pL2Oi97OiShd08eor5jMk2PiOrQqfkpq17v2oAIEr3TFlqlxspKM75FVUZNmE+Ynahdi+vSJIpup57nbtP7VpEk8oJ5VfrMogMZEpnXmCTSd4nxj34X/+mSY9geuwx1O7cmyRraRfOQavZplpgLhnhK6YsAWQuIb0hwYOaFZwG4+0nJAitbdquXaEyC+kZzq/7j8/5qHR2JGSMpnnZ2nkCfuA4kNMp/coz8YgvJ8UZfuVf3n7ufYXvyBZG+QxbcQxN96pG1D3Xekpe44vqbFhNE6IoBhA60nbPdyYXV2dhApP+mWwYRMjr1/7l9t0CcJHPqzzZPHxfXSTqTeJpp8d9kXRtZfkg5d57JNethv/dvAOo7wvkXZBAIXZbH33w2nAuNRf2Y4gQl/xQVpTmDSF65u1oSjzth3cmx2JcZbSLm0dZp+S7GLq/MrZ7SIRd9PI5SqR7CC8us58W6fdBuzlsC+YLGcFRCUbZ0qMDwzdnXhPw3c/OhC/PvSkGAL/bmHGpVdIMjRS5l77N4urOJFlUk9di1t12w25A6/jxiMZ4bAvvEALB7dyjBPH4iMSYmEjxUjnumZH8O1/+GsBlSqSfkDdsucDXVpfZl9ABnDpeZBoiKOsmUjPe+gl9v3awqY1V0/W+yP6ALvHTyBc7f8wfA6UtPnNZJajZzUWrDdfGQ/2NePca8L5NjWLkLNk2CXrbbfl5rIAtXuyHJtFuetnidvLAdJTfJ5K7ZeqBAr2vTydEcvgFgxInaYyJtms09Lxhu3+GhyRyukP/8Y3FddBxvPdXy/dpLIk11fudt3H7I/arRbMCv6bCDS4YUvI9YN+4ot7iflnYcT/amlD7NhT6unQPBm3M6q3A41d2vsJvwVHKt3m1+RuIJg/NYEaf83mLcXSEhH9W9LhCrkz5kSslfAEAnHxmgo0+HPfG5gd2iqbm0O3vbTAKg6zev57mQem7QODhwvYcUKL5RN5nvn50DiP3OPDECxJsMeCwoeEecT5776bHHLCm7Lu3LbCj3o0iw/n8a0SUacbguDjoPGt7P7nSbof1b3sOAv2GFv2gC4iv7UyTyGq27ihQ76/gzlO4t5QYNd/Ofdk/ZHBUKhUKhyESeJEddhVA+XL2IuVcbARA1uRKui3OWeszegW+2Wo1fqi1qTbw7JVbYpuIGiBeqzs8XgFOvlqL0ZMno87gAYWOD6pS125L6LfeJBHKiQdXjlmTr8++U4p5RVtff/3c8Dp9Dr55Sw1G3aV/W/yE1yXNS48rMeEdS8jlo7Oh46FWKZnO8LdHo9dzpUpMPPv4GgOedMt5Xo3Phewia0YUFA9C+7ZbHHKl4UhJbSV8fM3WWZdvrcwbhn1IwGqIPF78CQHJ4whOfa0p+iG+7KDwvitdl9OsOhOYzo9yVwfVo3FMkl9WbatKqSVqCDAdtEp/6TM/x3FtG0bI0mj+cUlaob/lyEUny/iTFE453Ee98bRcNd42JHE6WexXhkNZ/ry4tRTGsF1nwOMw1Q+0vXMR+HSzu0gKAA5Nm0Na3ixxUAJJjnibHuxNTqO5gZFaA6MmMEzbRJu4/snNXRjWFPqAkz3wkE2c/99OWihfrejXAdN56Ko3MxH5ek6iuaWEZTRuKA4thnk+O58R3v8OkSt9abGcAfhvzV0B4x6aKGHtKma5A++tMbdkagD8863OlVhH8romTQeYX2tigOrGviCrmeJu0/2PyrXIU/TSvpYTzx4NOdbjYQGwlrervZYLfjGyPC9/dnfLvxNo8Ji47dGHBnO4iz3yFzxLL9lMpibhcftprsDx96DwlpeGZ/uWp2DKaiSWnAPDfiy2ImS0hUf7fFtzAX+YXcfjqtGgjU9+U8mVPkl1GX9Ifg0kWkpqE/BcDj/c1Mc5XbJfjuubehnndkEDjbyX+MvAj65iWZt2RKiv93E/n6fwiWocMk2L47u4AlFx8vFD7srnY8fUOFbndPJ6ohhJuctWQgCal4Fqm1KoKhUKhUGQiT5Jj4tLiXKmQZHHjTjbBJ0ukHuKb70biufU8AFeeD6D3sNWWlYsWDVM3iPdbyG7beooZXA0kmcShxkFjx4ZKqcbqyY8/15youuu3b1F6ubik59Vbq+ynB+nWQNQAC4N+ZeX3cq/Wba+K71YjdypKTkEq1uVWeVm7hDU5ydLgeemStkOlzX0BCP7PcUg8lMfWPDlnP6zHyx3/BOBNr8k4pwb+S8WVjJircpT4TI/h1i2btO96vwjul4Kg/8o9MT1MRmMnr7nW3Y2qi2MySIzmd6Lj9OGU+P7pdg57WjCHCHi9fI7BpX8H4DmnDSy850OXOcMAKLX6Jp6HCt7JxHhAvIsnLujAl4NFYhhsHIj/KlHzPTI/bt0qDPz+R0toSrlZt20qAZnVqP93qRn7Z1Qj8FvrZsNZ+5yEzU3t34oj/8lZvfsoYpOlE7dc/Rbl3pPA/4JwdnkUuophaG5LFEPKhYukPBvO2edlnPGsfJ26xU8DsMJvOisfePLMoc4AOE4pin1cwVVeyVOcoz6gJJrvDCxLLe+evmixESOrH0hsTC3Hi/jpnCyDevmfB1HuA9vc4OwwJ/X+cOD3tHF5/GB9y5jIc3v74P+qdLyCavODTpLIecOUjC9sxgomZNnX/5zYeP/cXonQD6W6vbXTxaUnoV1tfpk2CXdtVjVu+nJkALX3dMPvbUn1ZTgRZ7M2nphah+iOMy3f259oxaellwNpCcfNJJmSaTz6LYAM2Ycexz8xzvG7c1upu1Hc5UstzqhuvFFR1PmlW51ibtBSiurE9j3jVhjTtjQDwOOQHt+v9mFMtJ3X9NVB0p+/fXuiZdtbsV04t9uf4rukHyU7a7jdVuzfO+vNIeqhPR/2kFSXBeH6n/x8TS40lPsz95UvM6ghbxkTafDt25bvnsfl9rt/b9ssOBq9Hl2AhGtcebYED0rK65tY+iHly1xkReiqLOeEru+H5r6e8l/I4t2a2csyEzO3Fu8+swaAIw/8+bD4n5Z0munHmBei2uPYT0tK3Ol8XU9lyFEoFAqFIpfkPUNO7coWVWp1ey12GlltJpsMGUrJXDEk0KfjAACrxhQ9CbrQssRPlxXe7xV/zrDv6MMUOm7pD4Dbdid8Zha8qs3sdXr27XCqvSiS9PbDIWicU4hqOhuAZfd9eHdTZ8s5xbdo8Vwm96+wSvA4bPbl5+A12e7TouGCIZ6ub8tK2W3N4UJp5/l367Fl4Phsa9SZ+eBqOAD736iKZtuTF0z9J0qOJ6bWYUQz0QR1co3JkvgeYO9DAyvv1ODXLyUBdfFFRwtFA5QZfekAokZIXckSZa9Rw/ucJcNPekkjdNUAyo86bZPSc/8raOzs0bpkfdaG27krMGANbvWKoM/IFQD0djvHqKvVWbRHtG32V/SUXSDPzxh3Jt9xs5Bzf85X+riUZ2WQKTUmhjkBfwKiVu1/TtJG/X0ymODJKU/NpKjIHzFf1iamzZcZtoWukoWP3yYtHr8eeyoGy6uD6tGxnxSKHul11LL9iiGBFlNHWLxS86re+idOjulJeTacJM+s7gjuO8/bVL2mUNgCq0yOCsW/kX/65KhQ/JtQNkeFQqFQKHKJmhwVCoVCociEmhwVCoVCociEmhwVCoVCociEmhwVCoVCociEmhwVCoVCociEmhwVCoVCociEmhwVCoVCochEgU2OOq+i6LyK8saJGE4urM7JhdXRurgU1M8rFAqFQmEz8lSyKjsMN6RI72cf92THmPEAjNzQnEsti1r2FTYXh0sW/+df3sEEPyl4OvhiLVYdroLPptSSKFH3Vbq7R6DzcMdUys/y/XT7ooBk+D/8/HScUktY1d73MsWHSt5DW1blUNgWbVUpaHz2RU9M4XfpV34LAJEeac/8+ah2OHS4DVivGs/ZUdK3f3ttLDcNdnTe/joAJRfY4bj1OGDbCjb/K+gqhBLzgTMAjYJiLdvnBPyFERPlN0sFk9BPHmCIOlEobSwslFpVoVAoFIpMWCW36rn3ZRV3cOA0XjvbhOutpd6Z4fqNvPxcgXB/XRC/V1oMgIMmZ4H5rjGR8F+GAhAyxLZ119Kj83AHnVQ6if4gFJOdCZOzVBKJaT7bclzdfV0p9qEdpv1Hs/2dgubc+/U4OHAakLWGY2aq7XgVgJIdrds2vW9xGv4uksrbRaPRabSsi5eqHG8f6oT5Fdf/7U6JOQcwJqZWYTbmrdTtvzm3qi4smONvSL1Wu+IJrKoriejL6LPW+ExP61byLlj7Pb3btS5NRmxjtM9+QN7Rhoc7AVDkQxfYVXhaIV2xYgCc7xGCwRHig6Xeaa/wbYwqJkWctyYa+azVyxiOxdikTa2O3qKfh0iM6evJmj+b6/SG/TyQkMG2LVBvRh9Yijvhoq26UVmHppJoH47V+x6DyUiCSe5jlV+GUO5L0VI+iZRr08Tj5pJM0VOrENtqNrX2dgWg+Ic6SyVvW6ELCQJgzPpFlLGTB19t9RDsr8vE413zCk18TzDMSx68m9aRlNT64FXnDaH0KNtVh9c6O3P/BanePWPiFMLs0orOPqoQctvodpietU21hJivalom57MpCbTY9oZlX3KCHSV+lTaP/eJLlt6qDUBUeP7LyjwKXcUwVqz/AYA18e6M/LEHD/2SAfij6WSK62Qx5KCRRVrl+YMAKP3RrjxNkP+2yVFTsxIAsS8XYXzb72npLOWMtGi4ZIgHYO6tOnx/qDb+P8s9PtfaSMwL8p5sTbRj3LMtAUg5cy5//0QuudO9LgDNh//Nh94yIf6dqGdcwxdIuXDRJm3QBwVybKRMiP3r/Ukd55MANHBMof/5BmzYJffV7raWElvkfZ00awbvtu9tk3Hywsh6HBw83bLATb/YXRPvTg2Hy/jrROVqxESFhdJvgkbkvjB4XjGr6+M6edCj7SZ6eewBYPX9ML7Y+QIA+qv2lP3xLheauAOwPHIs/xkkgo3jql25vlahVeW4Oqgef74zAYBl90vz4zMy+NtKijQ7BcW9U8XyAtr/tifLcTdeiwBg8PCldHOVemGjrlVldzVdlmOtxYlvaxDVbHaO+z+5VgOAS4nuzAzYZNn+W7w7s9rI4GNtu4DGzh6tk0gJJpMpix3HPJAOXbyE/mv/A2D1FWf6ybHq9p6U7h6boSL99X7ybG/VT+JQ05mWSbLKtl4ERcqzTrl8JdfX+1dMjnWrAHCqjQvTu8wDoIlTIlcMCfSMeQWA2z/6U3yxSIJmW6LOW6RKjxVGvg38A4B6+7tStJVtJKHMaF1d6bnnCACdi9ygwjdvEPi+dQZ3XcUwjo+Q8eabBlLr9mKyJwAfH26J6/r4umEAACAASURBVApXALzWxWK4ds1y3v3OdRg55jsA3lz7qs00VhdG1mP/4GmWRff+JC1D35XF7sMiGt4duZA2LrcAKUVYc1dPAEq0t8LErdVhbCDv3I1h8ayvLvfvi2vPsOK3ugSukkVY+vqrGr2es+/U5qv/iCZr6Htv4Lr4ye+dqsqhUCgUCkUuKTBv1Zzwmb6NRtphAPwxfBx/rw4FsJkXq7kafeD/PXq16DVf9n8S0pluPWYA4K6PB1yt2r70+C+3Y1ldHwDaF7nKziSRcIaMH4g+wUTRr6WNt1+tDP9NkxybO9/hrX6yYg9+y7qSoyn5IYbkh9nu0zg44DxRJDAPXTyl1+TNppcfttedywvt38JtUdoK0nvO9tS/UGXaEKI7zATgUL1vaOv5shz0BJLjv4GY18Q0EvPidKKSRePy0snWJL7ugT5VO+HNWTI/4dih0r+PBqad5z6+iG0anQ3GimWo4/hr6jdnfHdY75281NiLKoGiOh0ycSA+09NMMgEcsXw2AFpHR058Wg2A3S9NpMaaNwEo9+6hHIwnBY/jdRNaNJhlpFoOGrp+KPdqoMcpjJj3A2gx7fCwWltiJ9TieJcZlu+Vvn4bgMAPtlOG7Mfu+23DOThgGnU+EXVvscUFqxGw+uQIUHyqvCQNXYdbnDlqzOtBifZPR4gHgD6gJACdm2+1bPsmui4lsY2jC4Dzsp3MShLngSnuOtxOysTusyuj3dPuQdbu4xFc+PcyZm5FosvOBaD++4Px/M36tgmAi029LJ9PJWtxuZT95A1gXzzeFk36n6fYVhkaQk39Kb1Ctjms2Q1cy/Z4rYsLx6eV58DzEwGIStYw+I1IOe/P3VZvb4a2ODpyq6NMPLM+nUIpvdjNgle/Ttiv+x7hQpY//BYeJelrWRD4xGf1VTCrnM/3DCOozUneKrYGgPb9hxC6RmxktpoYQQSCmUPLWBxyQGv5bLT4OMjEOeN2WUovPANAQXoQVNknk+987/GE/SJCVNAvyQRuzt5mqK1SjuORIrBERvxO67Y98Tm4F6DAn6tSqyoUCoVCkQmbSI5mSo3fS3it7gDsqf0tDXoOxvNb20gXj8LQpAZ1J4vTyIfeh7lrFGeOIsvdbN4Wh7WyynbIZp/WWVbA3oNPZ9mn/9EryzZboNHLKxQzrypRTWcRur4/AGGLrLdCz0yJXy9TsV5vy/dixexIr8jTeYg3282W5Vlcawrm1/75Yx1wunTVRq3838Lzm+2pfx99nM5LkkC4rYSYwNlEJYskMPiNyFRJ07acf7cez3XaxQTfmalb7AheJe9khc8vk5JiPc9pw+07Oe5LbFWb4A/EkaWN2wpmT2/LypmiynfAtvfJ3B+SagQzaaOe/qlmhvQqVvPnjrGpjn7ddKScL3iP+J/21ARg/6LqhGzK2XFPU0scOV/85i/CEsUDeMNzoZguHcnxnPxi08nRlJRE0mHRWzvUtsNoZ8urp6ELLcutcLnBV2vD9k4T8NI6Wfa/HNMFAI/vCn/iNmOqX43Tb4q95EDwVxn2Vdrcl+Dl8pLYQi1j9kg1Oug50U86U3SzOVw3JOG1VTLkaAMDMETH5vgbBYnhRBxlUk2HurBgUrw03HtZXPmTut2kovdlAFaUmsHCewG8dqQxAMV7XX/kgKZ4NDdei2D2B1MAqGKvY/6dUiwZ+iIADuusP+DHTpJnbHQxYO8usav760/GQaNn8X3p318NbEfYZsmGZc2JMTtSmoZz5jXps7sbTKbWYlEbXp7shs8F24WIpefGaxH0HLoWgH4ef2QKEUv7vDdJS/ftfSjbbb9V2xPa7/HvyZXIemwZKer6Ieebcb7u/dQ9l63YMqVWVSgUCoUiC1aRHLVVygFgchDRMNlNpIlLA5LYVVdWAN1Pt8BneUwWbzerUbcKJwbIv/tJ3RW8XCS9Y4ETF1KDmZvPH0GZSSKF2d7XMntiv6/Osme+zJAU4GCqz0nXZZGEjjpqk7yRxkbVuRCZzIbaswDw0xch2ZR2l7x1TmwfPR2A7Uk6eq2W/Ja2yKxhzq05vsdXPO/0IG17SgLzb8q+qjMjCZwXi/cVibl7Wp7v/xLaquU59b70o6P1Z2BE3smep5txu40G+xu2UxHObzMHkKD6NPRUnTqIUnOi5NutvTZT74NIOQCLho0nQL/Dkmu4wpb+BPwhzjrGW7dt2KKMlHj1FAM9Tkk70GarSgV4O6Yzxpv2pDwbDoDDnhNWy4v7KO50r8uWkRNpe1y0eXYtbedVXuCToz4okLErvwYg1M4+mxRj8rKcnF4Ot+u2S89Wa9Z+1hY7mOP+adcbAJBcxERKZcmqo79+32aqQTOa6hUBiBup48taCwGIcNiFncbOovKIemhkxCBxXw5es8NmHm5nBhg4GvEtICro3mcb8OfRsAzHjIwQV/DX3M8S1VEmyohjgyk2y7oqaq8jMtUV090jvUKkzawRlPyvqLAC2KYmxDygqyjPOPpdZzY1nIafzmyCSIud9na4z9kmNXD5yXYpxka/IUmxtW9fYW35nwHQo2Pm6zN595TYGYv8aNsUkK7n5Q1rueYtalaNJdz9LAC76s/mToTsG3ulKb9tiMAjNS+C14LdmGyk8o1bG4RxsIzHZm/U7NSqmyovxVjZiLaD9KXGhztT5AXbTY7XX5fEHVNHzqDZoe54DRC1uaFyCHFdcg6vC14oCw/N5RsYruTPn8AqGXJ0xSVW72KXYIz2cL+MvBRNah5lVsBmAE6lJNL3jbdwXJ37ND/5ocQOV+alXju3HE1+yDunOkBfcY8xxJ6yRtMyUGmvvIxjfDMOMultAwaTiVo7xQGl1MdGjAejrN4ugJiZtalV5SSXx5cFwGl5zs+u0l4tY30lE9HEWyH8Uck28aKxE+uyqP00qtvLfRx9rRqrv5KFT4kfogskM9O/IUOOeZF2tqU743qJjfsFp4xhMDqNFoMp49LsnSsiaex9Jxy79VkzUVmLhHaSqvCD8V/T1CnJsr38gjco817qBPmIsc7a6ILLoEmRcfB8+5Lomtxgd/giQKqWGCYWB9Ic8qxG7cqc6CGOfdEdZqJFw+4kuS+1HDRZUsmZ4xyNmOh/rhEA29ZVodRH1rOZJrSrTc//rgTgVbcLfHGjIvcMkpXrU5+9luOqbu+Z4bwPK6+hY5HrQGoayX0dAPBc6Yz7wpwXSSpDjkKhUCgUucTquVUzc2mo6ORXDBlLKb0z1SaJerDEeOt6b2ldXUloUC7L9jOdjRT1vsfQ0A2WbW1dxGXZbC+YeycAgJVNKuZbVH8cZXfLCmlSib8tGfEB7DS6DPY9M2vi3ZnVpa3NqnLklrixERzrJmrViTfLsbGy7QpfP+hUhzrvygr8c9+0lfin16vw+38b5Cn/Ynr+6ZJj8vM1+Xy2VNswS+AAVwwJzLoZwZLfnslyTuPGhxjuu95SnSN0Tf9ceSIWNNpqFXjrp6UZpMfQJQMBCB5aeFV2ssMcnhD/6X3+qrwMgDLr+lBuSLRVfQh0FSSL0anO3vj/lYj9ZbnWqZeKpUXSayA5JMFyzrcR86ntkKaOrbRwcIEnIDe3q9fy3+iYmtN1VbwbI/d1wHOlSLuPkgDTY2hcg+bTRVM41PME1Xd3I6C/JErJnEe50BKP54QuLJiWy3bynIsUIh3QezD6jXsfc5ZtuDJYJvDwVw4xM2AT+lSng2bH2mP/vNgQrK2iuTK4Hg9Twyw/efV7PHQPCNJL2EEJfcYoyGX3fVjQ+lkADDEnrdqu3KLZ6M+qMFGN2HpyhLT4uyudwmiQOkiP893J0YcpdFg5BMh7SbJ/+uR4dUU5dtUUe/fZlARa/DAcgMBV8RkSPz/qvBePt0Pb1DYVODKjL1OaMxMk0vVgne8sVXYavPd0xFVnRqPXc6NHLQCGvbOY2WcbYv/cmUJuVUYuLS/P66FSyLqf+2nm3AlkTd0yQMEUsNaX9Kft7xI2ciy+BLu/kPhH981xeRZIdG4ygD6sEUzv2SvYfjcYgBO1kjIcp9SqCoVCoVDkkkKTHAFOjYngaE9RvYVPiMRvYuEExj6Ks6PqcaTfdMv3xoMGAJIH1dbce0mCnjdNnJZlX6tX+gGg3WzdoN3cUn6vnnGpTkXVpkdaPEYLA3NOyysdQ1nw7kQMqU4G3aYPJWBOatjOE6x+/+mSoz4okCtNpbis5/FEtH/n7p3SBwUyddP3ADw0aXm7sWRmSDl9Ni/NzR9a0fZc/iWUfale31uTtHzRsKVVMr0UFLoKoaz4fRGVvhFzk7XKa+UFc1jH2u9moUVLi+59AdBt2pfv39ZUr8jU5RKaM7BXZIH8ZnoMjWvw8/eS2LxLyYgM+3LqzzbNkJOZ5GJp7ssul22Zcjf3lFl6nft9RQwvonHgUn25j2WX2b4tnruzzwgRm5yC7oHEUBWeP56Q2Fq8BnsUnU5yamNcLhZuq8weqt6zt/OSxzD2D5bFxb63ptF2TWpqnUKI4XpaSYk7jVfc6Tydd9sodvoq9jpuPFMCAPfCmBxTi1j7v2fgwBoZZ+o76DnxRinKvGu7ydGcqs14/0GuwjUMx2KosasHDZsdAuDs+wXTDnP8pdfRpDybr061l+lCa4mPLDhM+48SWbo+ADoKdmIEuF7ZkYgdMpmnr5DyKGw+OZrzg54eXo3YF6ezJl5c/D1/jbZ6DNrD30sDYJrog8OvuXQWMBgxmqVrDRg8rRePpPfz5X7NUgA4/xmVwSivqxjGsUHuWc6JTU6h1+ihFN2T/xXmqTGyonqxedq9Wbe6NmXGip3JXP7rUe2fOFWk7Cr2OkZfk8oIT5Odp9ScKBb08gfETfxGTW8APKxcJPpfQe3KFNOJXSrZZI8u5+IoNsNwLIbdCWIbq2Z/DoOT7RZqWldXam2W0ILdzUpkKHD8KIy7PCjfTezh5xyKYUpKeswZj8frqPzG2u9m0Tm2NfBk+VLjxkYQ3UH6tjk+8kZFcb7y2fSIE58CHnSqw0eDFzBqxqtPdJ6yOSoUCoVCkQmbSo6aWpWxGy+rpyPB01n+wIO5r7QBwHTLetnVzVy4IZLX6lmT+eh8KwDiZobhsWRPtioPXfkQovt54axNy5DettoBAAo67F7v54tmkYb1IaIXbzI0Eo8j4s58q6on745eQHPntCTZscnS3la/DiH064KRzEKmSZKDzedrs/adsQCM67OTcm5vABA26liOtrnkZuG8O/trqtiLrWfM9crsb106de/5AmlfQWC4dYs7BmfL9/sBoh6yXhnXfw+3RiVasufU3dcVbxtnp8kOrasrHrrC8fw8/VUg9z6pAIDLtdz7KMSXSkGrKVgzk/6+iPFXDEmsDFkHQP15HXiwph4lNoh0G/eSNykhkujBt+hdNlVemi4JwN4MhY+vGBIovlM0W4VtyskWrY4bvcXE89foKbx4rAu+k5/M76HAJsekluKKfK+kHu/ZMlg/bF6TC03sGNpGXPprOc23DJ7tY1vycJg3pj3WnxTNhIyUyabdhNc5HLFANo7dwPh3wohPtZV8t/kZqlWLA+Dz0t9QVu8EqaEcd42JHBlWBSg4vfjN3qLK7DtiBT3d0jrx5M+ncTlFJvPmzndSM+QIIy9HsG2a3O/QbwpOZZlySWyaPjMv8+ohcQiI/PpHS4Xuo+1SGPD+EFzPJFrOOdVGBsOfX5pEkF6qxQMk9XAk5ZxtXPl1YcFE/5+o50PHJ2E8cCzHY09OqMtrHpNSv9lTepks1v7taeX0gaXo+/tGAGo6XKbZDnE80x52xWeP2LNdoq5kca7RlQ8B4FzLYmyvOhGQheS9o15426jtMbNqE7xQ2mh2HjLHENaet4/ORdKyIpX61XaVOUoVvYXpku7xB6ZD7+fLHy9O5LmVUsEjJKmAHP92HQag5d5+7Kv9HQAbKy9BW1nLrrdk0qvtYLJk4UrLyCXKxcyf2380nKK7nx5ziRlzdrbjH5SxqIHbxrTDucutJ+7jSq2qUCgUCkUmCiyUI+4LkYD2d5vEsWRZLVW1l0TArWNEhXl+VaDFK9XjlwMYExOz/zErowstC7Ml+8Ocsj/ip3N+5PFXUyt2vDBpBL6TCi4kQeftRcX1krXh0+KPzjGbaEqh1hapclHiOwebFZLVB5bixkyRqv+uuiTDvsxJ5cN3d8evnW3yvKZHVzGMFet/ACTfYulPjRmkR3PmjePvFOHQszNx0Ih0U2fvK/h0kKQJT5L4+Z8YyqGtUo5v18wHwFPrmO0x25N0HE8qYfmuw0g1R5EkzRqhSlsk529Q71iM8fFZf8QKuPxVDC8HudYfx8rRrfouhntLf3LXOpFkEqmyyleDCRy1y+LJam3Ov1uPFzqJavl4x5KPDGnRBwUCUP2Xk0QUOcHMxk0BrBJ2cmGkeK6Ofu172rnczpJPNf1nsyq1z7lG+DmIWedg64DCDYepK9q7JE8HrlW3I7GCjOVvVt/IS27S7/clFWX4LElM7z9lD6bknL3DnroMOU8L+tIBnO8QgF9rUWmuCVtFx9gWAMTdKorTzx547UpVvRVwhQ59QEnarhf1bHqVambeu1yHv6bXoWgB2RafmNSYsYvD6uD9/AXWV/hFNqOh2bH2AFxf70+JCTttNvBkbt+59+oAcHDANG4ZE3lgTHt1HVNffe9Ue1jleZEAlBl78LEeuNnxT5wcIS2O7XRrOxwCpKBsRMnTtPWSd7SFc8aUZukH01bH23JpTSlKzJAwgYLwsMwtd7rVpf07kv7x7aLRGfb1PtuYuAnlAWxaMcTMufdlItrafzzdYjsBELuzNCYgxVsm7foVYhngKyrtQYdfoUT/2xYThzXR1KrMmZauzHtV1I/ZqVWfPfwSAKZvfPDcImYSa02M5kgG46qixO2VlJ26wPsYThchMFz8FjqX2MsLLlLOxF/nzF1jIpsTRZX6weG2OK+UrDjFNpwj5VzufB1UhhyFQqFQKHLJv15yLGyuDpSV5ZDBP9HV9QKV/+oDQMo1R7z2y9rFe9H+QlNB/8+gkcXftf51udcggWON5mc5pNKW3jj/VQSfmakSeB7z4/5TJUeF9XjYvCanO8hr06nWHuq7nuDLs40BiD1YknLTRVJMyUPyhX8apnpVSfAV1f75FkacPNMSoBuPuVLsgEi3Jg3YPTBivy5/JialVlUoCgg1OSoU/xyUWlWhUCgUilyiJkeFQqFQKDKhJkeFQqFQKDKhJkeFQqFQKDKhJkeFQqFQKDKhJkeFQqFQKDKhJkeFQqFQKDKhJkeFQqFQKDKhJkeFQqFQKDJRIPUc9X6+GIullYs12cvPRg90JLj0FdaVWwFAv3MNOfmxJAF2WGubqhL/S+gDShL9RVoVPP0JScRbNMrIzfJaSyHSt6ptoJ/7aQA6xrYEIKmR9RMVZybl2XBOtZdnPazpWvq5nybsl4EAlHs/KsfCyLZEFxbMlUbFANAngMd3T18Nuv85UqsixPRy5FSbOQBU+HIgAZ8UXMUahSI95qTkXn/Y833gnwAkm3IucrArScPo7lIhRrPtYJ6umef0cXo/X+KmyqDzdqXfedXt8ZnatWjYnSQ/+Z+vIgn4tPA7ky4smMtNinGnvuQu/TLie5o6SUWBDQkOvDW/L4HfSPFja2fKd9jsy8/BawApKKpNV1w0rfgoGT6PvhrO3uq2UwDoA0pybJQvADEtZmdpk7nNYT8PJGSw7asgmDn1uZRQG9pmJb1TFxJ3jA/5+PKzlirra45XImyIVEMx3LiZ69/+t6WPM9WrCkBcByf6Nt/Am0WlLJCetEK+jQ53wvlj1zwPRHnh8puSl/huxWTLto3PT+LZ9W9lOK78eClyrklMIuWMbQpw54akF6Vg+YWGeiIaHQVg++aKTOv0FYbUUlFv/tQbuwfy+d+8+NB5ewGw7OC6DOPio9ie6ADAmFdfRbP1QI7HqfRxCoVCoVDkkjyrVU2JSYys/BsA3VwvZXtMv3ONuZXkzNLgtZZt4TKZk1LxyevoFSQpTaV23ei5cwh3wFLU04jJsh5p4pTIgUHTCA3qD0BoX+tKjhcXlGH/B3L16vZaS5v2JmlZeac64S6nAWjnchvzumbp7/UJwnaqwsSQ4sS0mA2ISvfO+FIAOK7axYWR9Tg4WGrDab1yLi5qDfSB0o6Ygf54VrzO0WrSjvSrS3etPRNKbLGsPMf5baPyDCmIGtwv5alQAz8N6Ev6E/WpaAd2NJ2Ks0YK9jpp7FOP0GU5Z3Plnzi9KJ4Xvx8OQOD71n8nHZ6TOquLyi9mwY36AEy42pQlzWZS1T7tOO2L8rz3PzTy8qpBlPo17Z1wOSQar5QLF63e3vtd6gJwvbKGta+Oo6hWJMEiWoe0g3psynDOsR7TLe9wzaQhlBhbsNKjLrQsg9euBuAF57QanEmmZCoujqTssB0Fer28YkqS8aTatv/QMUSkwP8rJnVGVzwQU9R/J3fDu6NoBlaX+4UIR/l/LjRypuTWJ79mvqpylNjhCsCNJBdqe54GYPnUJvj8KCoCY0IiWidHkn4Re+T68sstxVFDf3ud0P/sefIWFwCXhtbj68jJAATpUziW7Miry8VWFrQsCfvT0ukeBhbjk2/nUcVedNsv9nvD6rZSXfkQubavq2Wb/eV7GKJOoC/pD8DteQ5srLwEgCuGJPp1HIBp92GrtstMyrPhxA+/DYBbi5MZ9l0YWY/9g6cBUP7PPpTttt8mbQII2S0DzIQSWwAeqXrJbl/9jwbjNTd3A/o/Xa2a8mw4vyyQxUURjQPHk2WQef9MO6I3lsV3hwxUTnvi0LjJe3qibwmies5gR+r4+nFQjYJufhY04RXlgxFM+49m2J5UzNny/f4gqWD/fthaWjjfsmzXomX+HVlUTVncljKTjwAU6CLJ3GedFiUxufRyAIqnFt1OvyA3M+pqdUb7ZN9vqs6MJOCzAp4cixXjdtOyAHjuTBNy7L5JpJTLTaJrJudwZuGh9y8BgMGvKADaO+KLca9SMfyGSUH678qsY0uilL2aWL8ZKZev5Ph7Sq2qUCgUCkUuyZe36sW691I/3eNvZJb2YjvpfYiuvxLO1vLTU79p6BrXHIDyI8+Qs6+RdanW+QgnHhYHoPf0rvhN2EYwaeqDlNS/2nPn2ZFQlloO4pBjtLe+wGCIOgGALirdNnO7zosKqMgLMHq/qIU/8TlAShG7bBRd1kG/cS9uG7Nu13m449HksmU17LrdyUYtEsxONmap0E4jdyTZBLX3dAPAe7wT2r/3EzNXHCH+eH4SpfTSzg9HfMuMuaE2bfPTin7jXhqPGSafX7yO20SRDh0OnYZBYP+baHwMAKmOTCU3ekNP27bTtPdojtvTaVUpuk7+zvVvyBwXJ6IHiCPh8S4zLM5avV+fwuZXRdqcEFwxz226+4qoTisNOUw117MU058CoL3LTUDetXjTQ1oe6YZWIxKjwyfu6BJl1DHa66gYWZ2jDb+y/OZ1gxT7dT/1aAeUvGC4dg3XxaIpSyFNKvus9HKGxXUCHu9oaWssKvALF9EHBRLXXdq8+rWxlNSnqagHLO0HQJnLeVPxF0goR07oivsQ2Dcmw7Zzc0Vt6HGt8Fzqr/fx47u7bgD4nctZTZH8fE26u03haLIMtM5nHlCY1WJvvCYemA9b36a/11wAdic5idq1ENsFcHexFxsqL2Hm7WAA/BYcsVmbTi2qynfFZwJgTB0Wa+3rCkDRTx3xPSDvoDFRPJKLnLADwLuFzqJafX92L0rw7/UGzIzPzNR7MTNtm9HBgaBZJy2LR52bG3Fvy0Tya89xgDM91gwAIITC81TOjC5M3snTHXyID0rmj+fHA2CnKcKuJHn+l1Pc832duM8j2NVtApDJjpjKtFsy9s3/4QVKjsn4rpnHFY8tXhwts96y/ZIhgdaTRgDg+4P138+HQSI0JJp06LoZLM/6aSTl2XBCvjjCLyWWpm5Ju+eDzjcmZLZMonn9H6wyOeqK+wDgtyKeWQGbM+x70E70+TcrRmAffJfSfeQfMN67hynFNo/CcDT6kft1FUSC6DZ1OZ5aJ+r+JU4bZffbzoYG8vABblR0oO+AVfRzT3V2QYMxdRXadPEggqIKb6ERN1Ym7OOVZ9Dn3LPptAm2c27x+cmR/yvbzPJ90x/VKPNe2j3JvN6+X05sZo6atNff4U5hLnuePnTFRLo63S+EhDIZnasc3KR/z6/5LXUd/gTgllFDue/fIGyU9JGCl3GeDLMEdKpXIAcHih3cvBD68OozACzdVodyU64DYIg5mc2vPBmDW6/NMimeTxGpr+XcEZT5Qca6knEZJ7mUpuEkjxAJfG6p7wAny3ldDv8H30m2WbSZ6lcjcLwsJPuOHUKxS4UfE6wLLUtCGU+S30oLtTJL3CsqTMNZa2fZfj4liWGnOwKQ3NuJlFOn83VtZXNUKBQKhSITBS456or7MGbHKgAq2mf9+f11FsiHOqkbxEGM2mMiKT5HbBmmZNuGAaQnvkMdXv5UQk+6ul7BCIR+JN5u1lQT6gNKovs+hUpuaS7lo30k+0jmJAB7k7T0/jYSgKDRhacKvLS8PBtqjEttoxPRkyriiu1dv11+3snpn9O+l0kX2qJzcwM/H8v30518iGluliRg3p0gAHw2Xy101fTTgia8Im8skRv6gtNvuTrnuX2vETRye6FLjDo3N069WYkhL0tWrt7uK6i3X2zOyeu98YxJxvFP8ewOSdxZoM98bdcITn4tEndZx2ssv1SV5OkSEhOwfJtFvafR6zHVKE/Sp6JlWVFhOs6WMBknfr7vzZg5Yhbwm2D9/n2jj2h/xrwzj9d/l6wy5b49aPNnqXUV23b0mAo4lbgPwMeVV9HK5UbG4yze5nYZtn96qQVJLeSeGuNz9k7NLfkK5ciOu7+W5a8qP2a7T9SBOf9k6CqxV4T23/Wkl80zumLF0Dg7cuwjGUD3NUsT1T+/XpXt/6meo+G/IDkxrQ7RyZTjWAAAIABJREFUHWZmcO/O/Hnm7TIArK7oafX25ISuQih+X8kEPifgL8vzND/b/Q+lS72yvS9lJ6cOPbtsE2aSHZeWl2d3rQUZtqUP5diUUASACb1fQft37tTm//RQjqQWtWjyuQSGlbS/Sa/UBdu020HsuRPIlZHyHsa1dyDmJTFKJpgeUnlNJKGvF05ayIsjJFvO5Ndn84xjomXRM29Ga3xmFN4CUusojoqagBLEdZeJ0qnaTXbVXJihf/+VKJPjGwv7UXbOWYvznbU5/VkER3qJuSbsj76E9E7NcGS0/VLxzI+VAThY/6scj7lpSOKeSe5b26+H82WPWZZ4RoBy61LnkNdyHyaoQjkUCoVCocglBS45lt+rZ5xv9p5qoetex3+teH66Rt/hcuOiaJuLQXxHjUUWtWH55YMIeaPgvd3MQcPRA50o5iuq0lFhq3je6UGGVVxYakIAa7QhJ3QVQol534UGZSWI9e+TwRT3kjZurLwkg1q10sLBBI2wvbE8bmwEg1uupZ+HtFGLloaHugBw7aYb30bMp7aDvDJGjFwxyIqu40fDKfqVbdv78PfSAKyv8EuWfWlhHmmr46jkZIb2lueu27Tvkb/9T5cc06Nzc8MYKoHyHD6BKSltla51dOTCQAn23z9sOgmmh9SaMxSAUh9bX1oz51adGDmbho5iignf3Z0Sn2htou3JDp2XBKaj0RD7dihFq0iYxN9Vl2Q47pYxkXtGeRwtvxlB0CRpr+H2Hds1FkhoW5sOY8Q7toPrET67/BwAhyZVxWPlYYwPbJfJLGZeTQCOt/jSsq3Gjl4kx7hZvvtvTsF+XZp2wlS/Gh989w0AdRySGX5J3oknSV6QU38u8Mnx5IS6HH1ZbDp6dERerMem1dKBSmVjH9MHBQLQ97c/aO0sHo4Tb4XwRyXXLMfmlxMLpB3RTedm2Zd+cqwyW+x5tujguSVubAQbXhb7nr/OmZCfRX1QftwFUs6dt+q1T/5QDYCoRvO5Ykhg5g15Afe+XjVnlWntynyyRNQj1e21NB04AKcV1leX69zcOL/An721vgdynyEHIDpZJsvhgXUfeY1/0+T4OMxqwwsDa7B/2HSbZsi5tUZCI/6u9gMvRomXor7ZWatfNyeSWtRi/qxJAJb42ZzofaYp1+rdtkWzco3OqygXupcD4Pe3x7EvqShDlvwHsE06wLzS5pjYJPu5n2b4ZXFmiQrPfeSDzSZHgHsvy+BisNfgvTF3+vP0EufEm+XYWNklL5d+JHq/VJ3/jyk8U1Skny9/aUHpdQkkfyRppf6osIwbRnGjfuXVyMdKEbYk7gsxnB/rnpZvsXNsa6uXqzKntDs+oCih38XnOlWdORTl43lzWXOnGgdbB8j2J7Cn6ILFvhUf4s2Z1hoqfCYLgZxyYerCglm2cVGOE+BP9335v987AeB8XsfS/hLzFmSXZtxv41/rkW1Sk2NWtI6OlP3bxOd+ErrVInIIzsusq3k5MTV1IOw43TI52o10LTSp8dwH9Tg8YPrjD0ylz7lGAGz5sxKphU7wWPB0TEJaV1diP6jEse7y/1SbHknJ/z4dwoJ5XLkU4YDf9iTem/sNAM84Jhao5KhsjgqFQqFQZMIqSQBcF2dNxfY0YK7HeK8B/IokQw9Mdft36iwZMj7dXIn3vEUyujokAb9N2fxQIRE0Utoa5jyQ6A7iJVjJ7SJ7rbzGMae0CxnME2UI0m/cC8CaO9X4xOcAzUPEpqB7AskxrocfAAf7TAGgZtwQAEqMz6GKwqWrhO/sxZjKywBINqW94iPWvkLIt/cI2Z8m0czo2ARIS1iuyBvGxET+/LkeTpHyjt7sfh/nZda9Ztg70k8refflSCMxlfyxxJVpL3UsFOmx9Ph9NDksFXzOtzcQOuMh2jh5103+PkQPFW2Y1s5IVON5zEtNkGLs8SfxJrGZNuzwH3zbRWXz67bFeO8eIXMvc+cVySqVUD6x0Nqic3PjXP9KAHze7ytC7MSTurTenti+KQTbpfXxNVFyXDD5T9hi1fRx/0uYDeErvmzEO/8n7sxVfC5xrTAblQNllqVg7CDqwv5e2+hXy3ZVOfLK7iQT9pclBik/TuI/DhI16IuhQyi2TV5fz2/SVFGGu3fx73CUGWTNkxrMjgyT+8kJdXnL8+t8tEaRnlI/XQIx19O0dAyPzkOVf4zxUo2h7IRkajm/CsD+Wgt5fuUCyv34BgAhI/bZLG7amJhosauHrJCFpOVdv3GTkF6pn7U62gZ14swXksv1ucBoi0lpXY25NB86Ar+Jha/CTAj2xlObWkHkStZ0eLbg4Qu1uD/oDnuqT7Fs06bm8TZizDAx7kyyo+ysgrMcKLWqQqFQKBSZKFTJUePgwI1XxKutR9EpZFdE1dYU33GHiylJjz8wj5wZXQ//zfL7ZrXjk6LfuJfOsa0BWBa8ltg39ZTtVmBNLDAerJNA7NE+Swn99XVCo568fufxvqI+TjbJOi7YTlawMS1nYdcqNSTjszRZtOr2nhiPukFq/kVMWW3tab+Zdv9PpTykz5C3AHDCdkko/hfQ1BRV1dkWbtjfBt9Z2WeyMjmnSReXE92AjJlNrIVp71H82snn6kMHMS9yCse6iMd8qyod0DY9Z5N25BqjAUPsKUqKDxHrP6jHuAEiOXrrnAhtH8O9iYXYvmywv2M7H7TkZuHcipQQkq+rTKe8vZY5qQUNNt0I5cApceyLajY7w3nDPhlA0a0F59BUYJOjuajn8WEB/8/eeQc2VX4N+Mnobimlgw5auqHsDWUPZQoICsoQUaZMEVFcP8enqCxBhkwBEVFAZaMoCgjK3qulQBllthQKdCf5/niTtEkHpU3SKu/zT3NX7unNvfe857xn4HpRvMh8Z+STuhEi8s+udgqg1aB9TPE1RHflKMa6TvHsqNIdAE1MnKVELBMcHzyLfS+IG23gmpHFzlc8frYSANrwslUwWx0o5Dr1vi+xNcXNq0VL0LriOSnqfiJyDxu9eJgvA3aabMvS/+u5I1IPRy+B6MKbHRsUbe5tz8yagP/a0ndllRUUDvpByPwa7Gv3JQDpOh2JGjsWDWgJwMk7lbn5R4DxGLcWN42fKzvf5pgN5TXgN/1v/rdjIHc/FnNk22t9T/Vpwtdri6726V0bAeDyV8xDcxZV1asAML6faS7ukUuBhJFoHQHLKJrW9bj9mlCIy2vNNrpLR11py+nJNSh3XFyPy90q8sFg0wpsjfYLl3rAhliLlgO0mHK88JJQemd6zzK+dBYMCefLjZ2N+2S7a9jYUfiOI+3s836JnhF7+xMWY5kOGJkdRVi+c+wtss/HP3T/mHGOhNi5WuTc+VHlp5xgmjP95jC3i0hV+KVjzSLnK56d1ZjYTuI77BQqtEkFX0tboaoWydV2Xgx5RdTVXeu+jk2pIshpXt8eOO4vnjVmKP11Za0/HWu8YrpRIQYZt+rY0ayn6f0yOyD/AJs1933p7Spe4u/eaMQf80XaUdDG+DIVPFbaPOgiclvPPvkVnycJ786uPnXQnIwho0stABL6ZbF1+GQAgtTOJsevi6lFCEdtKHEOuoMncZ1UF4CL32ay7hmRezj+u8FWDdTRbgvkx0hxrg+utyXulRroDpzIs59CrSbuswZ82FW0WjLcjwAjrrQkcuylMlfnt1y8dSqt3u0nnr81n07FWyUGZFeyNdReLIpJhH6fhF2ghpQvxUh4ZNA6+riJuqla4MX4DgQMEsuapNtYEjnnKJFIJBKJGRazHNPDcpWV0uvc4eXPM7x/TlKsnUJFlq5gK+fJk8IJH9bPcn0TH4wWVSiuHfCn8vvxD92/eWScSVkxS1P1ndNU0QlXoV/kLf6oKcpK+W9LZuLP/XDX94b2XGzqbk3r3ojLXcXoLbbTXKN1Pis5lKrvni6VkWbCm02Nnxv3OMbPgSs4nCF++6jtg6nyphgR666UPJI2O+Eq9gUk/gf8AvGfma6LHjIq3329DqTwRQNRjsr7+xN43RPXWVqNBXMhzQsAxZ17KBwccDkpRup2pyvxfojwDC0J2g5AgkZEkBLvnOd7ikPDI+LOXvt9Cyovjy+w+ENulM7OqG6KyOjRcc+xuep6ABLrlcOzeNP8RWJe+Erc9dGdX/j/TYfyNYx9I5TOzqS3qAaA+o0bnK46J1cZQ4jVz98en1UT90Tbd7bJj0sdVKTpU0w8jt2xSpeOlGDxvjBYjQBnszxRVRfV0u5/kcVvNb4yO0oc0+poHxzneOCQZJ1i9xZTjpGzhXJsH9CTnv5HAKEcc6PRmV7eu9p03kzoAMCe9bUI2ijMYkv+CKoVngAcnzKL1o17AeD8qTt2R/Wy2dlzYUQE9TuIEhUzK23mmkZIcO3dMNRY9mnSpKQQMSYnz67h2pwQ9G79Z+eUsfvIvCvHIZMOGAf1SmjjSy0hxfJpHOf1JeNOtVpsUos0d2eV3DJtSnWnwb4X8f9U7Bu273CpKhzPhfnP5eoAT/3Yq7TbK5VlnK+KKlE3NanMq/SXWLkP5t4J4SnXbYBwpRp+/9isDLr++BqhP4m5vhALBUb8cEpUQzkxeiZbBnkwKbaTcVvGVtEeyiM2pxrK1VZq6jSPZXnISuO6Z+KeAmzflsz+7etcGSHqOXu5PuC36vPz3e/PNEfef0+knrivLBuKUenoyFddF9PsgGhh5XvMOrmXSv1LIkunMb5n2jjd51CTpSb7afSV3C5ka+i1cDwAlacdQptuvZgU6VaVSCQSicQMq9RWNUYsfuDLzJbf0clZuDiUKNiQKlxa7y0YQODGW+gu6d0kOp0xqdeSqCuLsN8zrwbwVdfFALRxSmdWsqgXWsXxapnoyqFpU4/zPewY1+4XAIaWjzOJuMzdlaP69qEELxLyWqv2a+66qCq9dTD/Zmv+Ohdusp/PeuEO8dh92WY96Eqbx6m26v1ejUkfkGxcDiiXwueVRXRl/+MDuX9UeGaC37VOTVCls3DPxnxaC8+wnICLv+uuzDcSWYmSgxkw+pRoFnz3mCchb9umXunci7seWnAcIFGTxj2dgqcXTAAMFlDpVaDJD3VIZb7asYK+44SV5vKjdd+Fl99pyrxBIsjwbIYvn6/tYbJdmSkeucrvWz6i3KaFx8sqhg4gscP8ePpJ4b44neLLqYt+6HUjfhvscFsr/G62qqwh+XfxOCnHsooqMsz4+V4NL650EIrS+2813tuvkH3R9rmNdzeH52lNZaDu3gFk6lsvBf2aUaYaGuQmaYhobuDf/wKX75THp/uZUpbI+sjC4xKJRCKRFJHHynKUSCyBtBwl/1VurhP9HO/ccCPqjVibN18uDQp6nmXhcYlEIpEAGN2oPpSsQcB/AelWlUgkEonEDKkcJRKJRCIxQypHiUQikUjMkMpRIpFIJBIzpHKUSCQSicQMqRwlEolEIjFDKkeJRCKRSMyQeY6liMrDgwF7RAeT592S2ZkOA3cOAqDSWhWuf4mK87o0UXdR4eRoPFZ7X3TN1mVkIDFF0aAGcc+LhtXTu39DF+f7AKgUSnamwyfPvyB23Gf5biaPE3HL6zK87k4AXnQ/xlPvvo7natHg2Bp1kh8FpaN4Vh50rMXlDrnWu2Vxru0SwLRLUK05o6j0mb5+qNa6GX6K+tVpsPgYH3rnNINeeFfUgP7ieDsqrHXGfY0oL/c4lrBUOjtz9sPaALRrdYQPfH+j6WbR/Djsh2ybld6TlqNEIpFIJGZYvHyc0sUFXdVgAGKGuKBw1LC85UIAmjkq2ZYmenaNWTSM4KXnyb52vRhilxyVt+gFR1YmN5+pRlIz0RMuwP82O2quAWD01ab8vq0uYf93DADtgwcWl8PQ/SLltXssrL6cmvZ2efZZfV90PujlmmRcF/7LUAAiBx2wuEy5idjvQC1XUcR59sKnqRCThcshsVxav11hdDiRwtDyp3BQ5L2OBgwdWX6tUa5Y55Dl4wSKutVJaOcOwJ9jp+CudKTat6LJdOibtumEkR/q0GDOfeYGwPFmS4t83NP1RePm7Os3rCGWEe02YSXe+zpAnM9ZgaK7eLZX1FxCmNqJmcmi+83vLSqjSU7O/4v+oyT8VJ2jjZfnu213hpLhX4uuSYEfW6ZDh1W7cqhDg7k7VxihdTwT+MK/aEJ/nFiLHRNFN3mHLdbp5lwQsQsbAtCz3kE+891v0rLKnOgPxANfUANdS6H2rciNp0IBSKpv6toZ0HQ3vd2FIqxq50DVHS8DENr3iFVl8tztwbLg3wGMjY63prkAEJ/pbdxv5rE2cN7F5Fj3s+Kv16pjVhlYGNBF1+bya8JFdjBaNGf++UEFAN7c2cu4X3nv++xrsIIsnbi2zT8ei/e8R/9NpXLMS+zXDYjtMJ8qvw8BIOLF0us6cX5yNKf6zc6zfmuaC3/crcaxO0Ipnb/mxZk2i4zbW04QDYfLfWfdhsNpv4bg+EE5FP8czbNN5VkB13UKVob8BkCNhaMI+qDkSkDpon82IyoTM1gMHNSeYrrG5S+xze/PW2hOny3xuYrL3X5NAPhm0jRuaUTrr9FTRqLMgvvtxdTIj40WcEsj5J3cqQea2HMlPq/syiGRSCQSSREpUUCOupIYgTX4+SzvegnX4zNxXYjcONxkv+CfxID1YlcV7oGiyvtf9Zfyrtcxhs8Xk+BPfTIBr/m2c8XYuYlAls98H26xLntnOgDP+o0n6CPLN9s0kH39Bp6LhEvHc5Hptv3hkVz6VlhDiwJ34LPW0fxwq5A0PpCoMSJIKKbV1wC0d9JbgU451uDwFkvRtsjfMKlfYTR+06x33fov2UQfN3HdOrw0AqeTV42BSpGJOW7nrCfqwzJYeS8IgIrfHM2nXa6kOKxsPZ/TWVn4byjYnW0rQtalUS9xNACVO18gcVFlACocTkZzMgZaeAHw3JcHS0U+pw4XCtymSbrNzUkNQcxEUbnlxXx8WUVDVUW4ZmOGeRHdRBQUX1b527w7thR/4t9M5YltrwIQNeE8mqTbefe1Fo1qsviTLwC4nF2OSUMGAuD9h9AJhvdh9ymvEdN3DgCflne2qkgli1bVCPdUUqarcVX8ulAip+f/Ioz4Nefzsw2HsPKn+XiphPl8p0U6XvNLJM0jkZWW8xDf0KTR8/hLAJT/xJmE1sJsPzJyFgCRdvYAZHiVTp16VVQE5RYlsShwBwDhm4cRudq6nbmN7DlGmN7L1C3gKZNN5wcFo3UwfXS96wsl9WfN1TYRD+Crj57l424iOjLi7C2yE66abFcHC2UY8ekJANJ14rcv7YjKfztqP19OfSTmz7xVu3hx/Hhc1tjoviwExe4j+O8Wn7MmgzvXxOfmdbiyuiY/NPwKgCi7nHdA+1M98dh8Gij9bhTKTC1J2rQSf8/ITRsB6OhUtPs8WO1MXIcFANQ/PIqKs6w3oDUnq7wDVe0cAOi+eihhf5gaShmdxDRYv/Y7bSaTdKtKJBKJRGJGiSxHQ7TihZ6VaNtQH0F05CrZRThWmZqJptgOg5ITNVFEXDbeN4oKZzLwyJU7k95LTAyn6jJxVtgb1zveVNlUxquvi2ClLWMmc0+rpMEnrwNQddlRtIUEUlkLc4ss6CPT5awn6jOl7/f6JRWL7wqLLfDHK0W6J4pLue/2UO47vYz5bL/QrxIAa/1/BuDrc9EAeBFrRan+G6hDg8mq6G5cvtTJmcxg4bL28LjP51VWAfDSmNdwWVf6VqM5Z+c0ZkZ7EfkYYfc34XYOgLAYt6a5MG14PwAcdhxHUwZyClXlyuHx4QU8lcKjFhMbQCQJxfquSXEi+rZjzTUczxTR+C8dexHnFeUBcL6WwdVXMxkdtR2AIe6Xjcd6dr8Cs4r7Xzw6DrtOEbVMBERFLrlhYr2ryrtT/2PhAv+f13F+fOABgPpWilXfKxYpApB9+QrOl6+Iz4Xsp3R05OKEegB8P2g67sqceTPno06WEKXIaG7cBMD7K/E3tWdjAOq/c5DF3lOFTAohkyHyMXhejNVdLqookWZw9wsNB2rOBECNM6MudEJb+tM5eTC4LE+9U5G4zvMx3FLPxHUi60XhJsmOv1Ra4nF1QlO2DpusX3KixdHnqDgwESh999m/gbFbN9HGKd1k3Yp7fgB8fLALS1uI58bpxj6by5YblYd4Yca+U4WB7bczoLyYa66o2o/S6CBzIC4rg6fWioTy8O8eYLdPvHRLb5guUJUTaUVnZodzNngR4683AqDah5eKrQDcnhLPXdew3igyhOL3iT9julOLpnRoEKNfyJnDS13sTzls99xqU1MJeVu4UnM/lw+ebczq6dPwUQnZNqW6sqSXUPraC6etKpNVK+SoQyqTUdnTuFxj2hHW+xqGI+JNX+U3ka8XtfycVUcBhaFwcGDVjGkA+jnQHEX984MKfN1HzLXpEk9aVQ5VZBjD128C0Fd1ybFUfwzfAm+Iz7vHKhk9S1jqvl/Ybl7AgMpL/KbJ7SPoMnE7AOs915qkwRw/FEK4r36uoxSUo0FpDx24iYr6ee3TWVk4zyiPJinO5vL8W1mZ2IQ2gdtN1p1MFYF4drFOoC1ttSK41i8KgNN9DO+X/AfbA04MJPxVy6ZqqCLDAEhq4sOtJ4RV7XTGEY8YDY5JwmJTbc+b2qJ0Fi/8S2PrMOFFkVv9gtt2YrPSOfamqBBjd634QUO6bPFG1cSY3u83RwiP1IaJk/FTHSK3UtyUKuJHPI4klYnB49TJc42KEcBRkYXGRXjzrJ1PJeccJRKJRCIxw+KWY1b7Blx6UliFU59eThfnu4Xu77lTjAKsXZWiILSt6hI17YRxdJLb+ll134dve7dHd9S6FqOBezW8qOMg3LzDr3Tg0OJaADjfEgkHibWEJbnmpWnse124XBvYjaXS7CM2ibxUB/hzcZYHM2uLecWWjltzbTUdx53pPQd6i8+tXx2Bq62ia4G0pxvx4qfrARhQLoHTWWL0PuR/4yi/tfQqt/wbudHVkeinRREMn74XaVwhnkkVhcvys6EH2dRfWBqT33qh1CJVFWo17t1y5r9vaNJYc68GAMvPN6JtgEhsN8htSW6ObMrmN4XbPreFQzvxJ00n3JnLUiL48ngbALKuO6PQQcsm4r2yMTCnYEHkH4MI+VqB3Z/WSzPpNXwbAH6qvKkQjgrxrJwe747rmaYELhUuV01iUp59bcG7Lw+h+5xtVFCLIgDPu94i65sfAJg8bgCuJ26QfeGiVc5t8fJxF1fVNCnZlKHL4rzeX3o9241R+/sC8HuzOfipnOilnzROb5dkdAPYkqz2Dfhm0QzjjaJFx1NnugOgGuMi8qJsiLJGVSHHiTOF7lNtmQgmmex7wGJVNB7GjHgR0LAlVVTYuJjpzfS/RFXncmfUVFodb9xX61mOF1eL3J1MnYqVz7dHe+SU1WW8OqEpQwduYnj588Z1dfcOACCgp2UGOY9zhRxVeXduPFcNgOdHb+VVD3EfZuiyqL9kHMHvlc7gw1AB5nbPWjjdzsZhU9785ZdiLuJvl8znrcQ0SbY+TqIkXFhZm9Mtl5T4e2p+JQYggZP2Wr3w+YVPRUDa6G6bGV7+vLE6WH7MvRMCwIKlXQj6VjxTpVE2UuUp4j4uDq3K+uFiMBJm50rDQ73xHi+MB3P3cVGRFXIkEolEIikiFrccz02J5qm2YtS2/nhtKv5qR7mVeSfA7wyI5s9JM7FTCFdhrYWjbWL95Me5qU2I6TMXEJbjk0NEhR+Hzbat9/ooqH0rAtD9z+M853aO3j1FYJM12zBd+DSabP8MoiYKF9bDRpAXV9UE4GSzZYSvG07kCOtHNPY4dYtB7qYBQJEbXgEguqZp3ciL9zwoP1x4Kx4lovZxthxzk7sIwMlOc3BQqGk7TDw7jhtLN3o1P1x2evNJ0DrGvCBSBpR/HbbI914fJwJcaJVTINyvXArfRKzit1QRGPak8yU6Hhb1kGt4X8NVnclkv+0AOCnsaXeyJwDO/R6guXXLInIVhbv9mpBZTtzOXYfv5ENv4V3R6LSoFEqTtl7T9QX7F51sRuUvlSh2W7euc0Fom9cB4MpYDX83mc8P94RcP1fzLuywArFq4fHisvjSLmMkYdU/BxPe3zI3a3EYFyfCgp90SqPRoecB8Op+zuoujpIS/3E0p16aQ70pwi3jO6N0Bhj5oahfHYBfNqwgZN1QIl+x3gvz+lh9BN74yfipip4WFPWduG5hE4ruDpTKMS8fnj9IfQfKROHxgrCWciwuigZiXnT092uMVWxqzR5FpU9L5xlWlStHaosqAFzuk02wbxJrqoj4gnJK03KVsVnp9PpK5F0HzT+J5k7hsSXW4uysxsT0FIbNxOsNOfViJFD4tJQ5BT3PpdrsuNukCex9T0xG7201m27PjQfA7QfrVsXPj5k9ewDQbssK9tRbCUDjYaPw/qpsB3CEz78ML0Fqo7JXCk1xJh4Qo9CAkESrnuudkSsA8ijGFff8uJJZwWRdj3LipRhpZ0/vJ0SdsYNyhuGxINzOgaQa4kXv/VfpyqI7IMoZTlj6Mh1fEe/B9cMnM+b7flYLMikMTUqKca42XGSU0aeuGOzEv6Xk1Rp/AKJYQKSdI0fHCJkjgl4hYmTpBGNVfe8Mjc6IOroH3p5Ng5aigIvPiZJ/t3wjSCQSiURiRqlajr7fnWTiEFFQ9jPf/Yz5SIToLvmhss1luV3HI886TYc78JXNRSkWg2sKC+gPXB6yp+1IGF5b/8n6Q/TpH/YBYLKzqYek4uaLJmXvVJFh7FkgIvB+jtjIxuXNAfCj7LijJblQiN8zaXAT3M9l4nD4fJ5dNHfuQBHKKR45HIY2TIuytKqNFEDltbdBTIsTrHbment/vObb3nLMD91hMQdZuTesjxRW2ZzPW3GkUU53jz3dptNjh/D6ua6yrddPc+cuft+JKbG0tzKZOl50r5h8qB/sOVai7y5V5ahJSWH7AhFWzP9KN/jldse8VfBn1VrJJ9R3OzHeAAAgAElEQVQpBWmKjs5R5IluvSEqhKhtWPLpYTyom3NNE857EUneF5ulcF+R/0OZ+z2Y3bY+YxasMLbcStVlYne/bFR4+beS0ke8MGvY7wHscDpj2VZqd/uK8nT/fJC3ebGBqn8Mpsqk+8Zl3ZXraO/dy7Nft+YHaHv8OXxWi5SishJNcKWTqdvfZ3eyTVupqf18AWj0yyU2zmwFQIWv804nGRoLB71WmbkbQxhRXrTe8lQ6UXeCmKo4u8oWEpvJlSwCodq8N449H4t2VounXSapWcm+V7pVJRKJRCIxo2TNjvXpBGm1ArHbWrzqE6pu1g3UKArq0GDO6Bv5/tua354eLxq3Jq0XnScq2tByvPNCNOWXFxyw9ERk0SPGrImmjSh2/5reatyZLqztNz4fhdeCsh1wVZbRRdfmw/9bDICr0pFXrzUgeKk+UdyGcpxpuwja5iwPvdyaozdF1OW90xVQVBaegvW+i1H67qXRMtGJw6d76URYGlA4iML8jq1y3oHNjvbGIy7epnIktwoGYJDHGlq9I57Z4ZWHEzzpoLFpuAlZ2SyZ3ZkR784xrprpL56jztQrsTxq34pkVvEHwP5yMtnn44t0nPfmc8x9PaTE5zfKUdwDk1+MptcEUT5s60j/Yn3H3f5N+LjK4uKKUCRuvSLctgVFnaZ1b8TYKd/nu23JzRZAXveMNVCVdyduYjWyygtnT9j32fkWKzaiFPmhT9QVcwLeR0veHLUoZHRuyKszRTTvibR0/vlLhE6b5wmmdW/E3IB5AKgUSqp8nWqzzgdKZ2eUFfRdGkYFMetZMfBp55RKhi6LIRtFKH+EVIzFIv5j8UzNen6RsWNHlg52zWuI5zXLXlPXBNM2Uqvu+wDwxeTe2Otd4munTsMjV6rBgsDtEKhfqJ/7aCWL7wah2WnqxrQkhvQl3cHCqzGpg4OI+1y0jjpVd6lx/b2/fHBPt21hfLfvxZTE064T2PuhUHgnB8+mS4uu3Lrvmmf//0Vtoqtzism69qefBiwzrXO3eTBrv5gOwK+pQXx1oRUsFDmMDsnZqP8wLa2n0Dejv94zjBHlfwHgnzuhJZaj2MoxJSzns3JH0fOF1KHBAMQ/58+uEVNxVYrR05w7YSz/shMAXljuAbsTJWzBZ4+l8dMsMbz0WX+Os6+Jf2Bol610c0kmd23QVH09xNhp1XDFuiHKumZiTtNr6nm6uG/kp9Htgfyr+Ocm9isxQttcaT719vfDf78oc2dNyzd2QUP2d5phbDU2+b3+uMXnmutTqlD7i/mLEZNXG+vU1tj9AsEnzlpNOd5+KRrvDaKMWezECCrXucovUT/n2S9Dl0XtNa8SYeGuDI8LqvLuXFnqz8EGXwAieT1JK5Rjt+Mv4r3iqMXvP/VdYbn8eN+LZ1wT6e0qag/fGPcrS7/uCECTda+Bq7BVY55cUOB3tT7eC+0yH/xWWif4ShUVwfMrRMnEpWOezuNNU1cWGjtmkhcbms0h0i5HoUf8PhiAyKkHSq19ls+PZ6jaVhQqWN90LpuqbCjScV1jn8LuTVFS0hKyu6zZy4hXuwGwMuQ3nq+5Br4U2y5lpzLvdnOT/R2VwjPwP685WBI55yiRSCQSiRnFrpBz5cfqLKm3FIDnfh9BxNfC2rK7koTWXZjiOic7YoY6UiVMhNL/ELkGld5Cc1CIzh3v36wLwI5J0Vbp3JDWXTQN/WrmTCL15nd+GMrYZek0NP4/UTXFe5713W6X3xWVXY6/MptkbRrTE4XL6ocT9VHHi5Gl13EdV9tqqRh0G4DPqvxEM0dRPX/VfR++69SiyH75krA54RBadDQ9LNImvJ69hDZdWA6a1vW48LQ9Z3rljN6GXm4NwI2XfNGcPpvn+yzF+LiTeRry5sbQnHfG3Gep+GXJrYbHtUJOlQN2TPPLsbrbHO+F3QzR29P+F+tGm6sDK3HqLX9iuz96btX026KY/5aJrfMtSG4p1CGV6a4vOdnfLZ4L2Rr2pIk5sOoOCfirxdRHkNoVjU7L2gfCrfr5pH5U+FYcVxrNF/KlUU2uNXfD5UnRLWlnrVXGAuWxWem8fPoFbsSJeIeq8+5YvEGDylu4URP6R3Do9YIjlc05ninei6+OGlXk39ri5eOShkSbhFdn6IRQf6RVoJNzwfN0hvZB7158mmtLQ/DZrq/TaeWKEObymnNDI27cTl++QeBikTdjCBG2Jgq18GxfGd+I8m2u81b4ZgBjOan8eO9mHdb8KuKUw5clWlXx5MagHOvMFhUpdEpYOli0zgpWZ+KsULHkrgiE+GL/E0QOE2Uq8p3UtyAJP1XncONvAIjcMgz1bTuT7RHLxKDCUg/w46ocDSXiqi0Xg8fQibads1XY2ZPdXJRc+3DxIho5FPzvfJMiGjJ//Gc3qk1KACD7SoJNZAS4360umsE5gTa/1PyWj26IZ3bjL40J++42Wn3gjbWfD0ugrFXVmHOqSM8qdgeMR0ahQF3Rh4ReYhrsblQ2/qHiuu6sucZk117nOpD8iciRt/+16AGisiuHRCKRSCRFpPiFxxUKFHVEX7e7Vd242UWMfs60WWSyW6+4zhw9L9IMIhZmo04Sk6c2G3noUbq4cO490Tz4j75TjAXPAT5OrMX+3lGlIte/idgFDYntMs9kXcfToibthTN+BK/XFDul59/E42o5SiT/RcpkVw6J5N+IVI4SyX8H6VaVSCQSiaSISOUokUgkEokZUjlKJBKJRGKGVI4SiUQikZghlaNEIpFIJGZI5SiRSCQSiRlSOUokEolEYoZUjhKJRCKRmFGiZscSiUQikdgSpZtoj7XxzA5UCiUanWiUFrFtMF6eoq63V//EEtfGLr5yVChQOokSbInP1SapTt7iG+qKqZxusdS4XGvPC6RdcTMuR828jubSFQB0Gg0UUq3HkiQOjWbCeNHguJdrksm27el2jFo+DICQWWfQJN22iUwANKnFhe4uAPTo+A91nUUx9gqq+7x+4lnjbulnyhNi46LPEonk0VBV9CF2gmi6G9NnrnH9x4k12NctjOyLl0tLtAJJflF0BbrVSjSIaBh5AQAvhwfsvxEEwJ663zPxRn12T24M5DRLthlaoQwNHTi8VOJvTLuFxl2i5gwiYrAoaapNLbiJQ2EUr3ycQkHi0Cbs+V9Olwutvs3plezCK8w76Av1VFQ5Me9OKBuv1wQg7po3FbaJFk0Vllj+xa90c+P+E6IW7M9fTsdDKRT79OQILqdX4Px90X5lUvDPRNmJrg694jqT2TPLJgoyZUsYP1Vfhpe+5muqLpP3rrcEYJjXTiqpwVkhKv5n6TR8fKsBAAfr2t4zrm0l2oyd621PzNPiobdTqMjSaYz7zLsTyuZ+oguB9sgpm8qncHDgXjfRRDolRMWDgPxb8P7y9DTC1Dk1dqPfGQlAhRUH0WVl5nsMPN7l4zx3e7A8eBsANf8ZwPHob0y2/5UuxtufvDgA5a4jJT1dkfn1qjhXB/86JsvmGLbbgtzdYsw5nZXFqFfHAOC0dp/NZCoMdWAlJmwXXYFaO2k5kpHBpITOxu0uavFMHLxeiR31F3NLK26nkf1G2vS3NufBs0JJp/RP4WDDb43r68wR3YMqTSq8TZ0sHyeRSCQSSREplltVoVIR9kKs0Vqsv3cgyt3uAPhNK1xLK2uIxqPxz1QA4NP+YmTVpepdPq9VHYAfndri85Xeeiyhq1Xp7AxAzKRqxPQUVs7JTDWdPhJWgue3BivhGgATq/Sn4jLR4HN1+GYipwwj8mXrWY6G67Gr1neMv96a3XMaAuC1LxntiTMATAjvi87RgSwv8b90n7OND30OA9Bs4Cg8ltrOxRq7uAGfNv8RgG4uN8jK9fPkthwHuZ9Fs0IMyLZUL28VWZQuwgV97eXa3K2W0yT2wzY/0cetKE2NHdGS8w/s/kR4QqrWGUn4qzZ2Ff0LUFcKoF2Fg8Zrdjz6G+Pn8dea8Jnvbpo5iuXECen47LKuPPlZhwVZjLm328p6dHdOK3BblJ0d5cddAiBjrU3EeSiZod4EqlMACFn7GlFz7pr0QH0Q4A+AX8Jp6i0Ya+zQk1bRARfbi2vEZc1eAMptLUetxQMBONZ0aYm/t1jKUZedzc1PQmkYNRaAgOlF765ueOEHiT64zNv0tPiwci1vep4E4M13TvL0lp5AyZsga+pGAuDkf5+oHYMAqDLhJhUShEIxV72amDj2rWsqFkZtx9m94BvcEhiuR8P/G4nP4oNUyBJy5XYEauKE31+lX940oDnD158H4E7HB3gstaqIJjSLiqOby40i7TvUPRaALTSyuBwqzwrU+V00PV3vM6vIx93QpJm0K8sPrWP+btjHnewrCUxe04PDHQ8BMNP/H6r/9RIAYYPOUWvBME63XlTYV5SYhym/soR6thfjP2gCQIfyx2nv9MBke93yYs5xD3Z5ji0NlDsO03G3aGTt5JOapzl4doJoTK90cSEqwvqNox8VTUoKGdecLfZ90q0qkUgkEokZxY5WddiyH78tJRdAd0CYkDMuPEGX6j8a1/uuFFGkCc3V6LKz8z22KCh2i5Fmpd056x72banBIvpJiQKFjUIvvOf9k8eKLYjEeuWMn112uVpHoAK4Ob4yL0/tmGe9Eh1v+P9CpF3eCxY7vyGRw/ZbVhClCj/7u/luuq/NYH+GcPP/eLsBu36ua9xW8WAmaeNEiPfOWqtMjusVJ4IPnC/KDKeCCH7vH+I+dgCg6kcjCfteuOGU5d3Z3Hw2qTox3s76p0KpyVgYtgzIcdy4j7iz4QBU+fk6mFmOJ1P89J8SbSbTwwjtK96XigY1CnwfXXijNscjZzHxupgCcj947aHvVGuiDhZRtIktA/i+65eACAx1TCzZlFypvwVUXp4AvB26yWT9X3+IKNaQbNvMp6l9KwIQ/3IYa9rPACBFm22cSy0LaNrUA2Du21+i1DtZfbffxpZOQMU/R0lulv+2qX93YEHQ1jzrHSukW16QjAwWLOkCwAKzTc43dZT/xnDfpFEJ4fZXlSvH7a7VWBK1XL/NwXjMhex07nwuHrJKm4s+TfA4ossQEemhb/6D0tsbgL67DhGidqSdPuUo4LPH7xoqHR1RuIrZt7jxkWiD0hlV508AhrrH59n/8oIIAMqXIeVowGC05CZpsEjz2DJwMpMSG3GmZwAA2Rcv2VS23Ki8PPFceQeAtUE/Y3CGjkp4Eq8FJdMd0q0qkUgkEokZpWY5qrw8uf5sJC2HCHdbG6cc66LW3wMJff8gkDdgxtIoHBxIGF2fdn1ErtF63y2cyxZu1WbzJxD4kOhbq8llZ09G21rG5fieCpY9KZJcq9hlU/tLfTDUibIzQlcqtNgpVHnWKxSW/xU1KSn4Ty34f1dFhgGgdXMk9mXhem5e7zTrguaQ22I0MHjsOJw2l418s38LqohQOq0Vz2lv15uMu9oUt5eFVVmabrbS4ubqIPbUW6lfyutBMefzD+YD8HKDoQT9IiK9HbZYePrBQqgDK9FzzB8AfHOnEfueCiX7sm2KGOiia6PQCP/Yg0BnNPZi6ubTjxdgp8imkUPO+2XlPeEBvDgiDMhr/T4KNlGOKk8x/5BZK5jbVcSLqeWQ/azzzSkicDhTS99/hgAQ8fIZtIUkYVuCxKHCRRA95BDtnX5hcYxYrn2xCpU+FQZ14P7SUzzJfeqz61NxfZQoTFIOWh/vR9B8Edmryfdo66Dy8AB/H9OVV28KOZKT0eqUJukcBoI+s/4gJzcXPotmUe+vAIh2KNoVut5YRcTRykDJI6T/62S1FwUoPN4/z/DyImr6hiaNw5Pr4JqwtzRFeyjm0a6WnIP8qsYKHsUZ18xRX9nl2TlkPCM+Pxv7DIrOSWjTrTAV8YioPDy4/rxINdv5zhe8f0NE8Z/pGWBVxXhnQDR3uuTMz75TexPpOlEA5aVyBZ+36g8jCf1ZDM6UBw6XWA6rKkdFgxok1nWj6bADAEzzW2iy/fOk6qxZ2BYAn0OphOmDZ6w1h6YOES+/9bt+RqUQ59LotNSeNYrg5fGACFe25YvcHMMcbMfxO43rjmRmE2WH0SrbXnM1VWcNBiB0vs5m1Snuf1+eX6ovN1nX/sTzAFw7XYWXPH/I97j85i8siap6FZJreQBgN/AGC8LnF6gU59wJw99OBOT0cMnJXz05YDaR7q8AEDlCKseCUHl54vSOeEGtCP6dS9ki1WlE96G4HrGuYizraRwvLh3LsaFFTyvKjYNCpHNsqLKeP0848upSYSjYNUhG+Zu4t33/uo322BnLCPsQdM3qcPe9FPbWFAP0ZkdewHuk3itgpTlGQ8731knTjdXAHkaiJo0OM94AIHzGXtBazlyQc44SiUQikZhRvNqqD+HcFOGiXPbMHBN/sDkNpozGf/FxALT37hXnVI+EqryIPD3zZRjTo0UYfxunWzgr7DmZKWZJRsb0IXW9LwC+y4/bRK78UDo6cqeHcPmUW7mHB8825lp34Wpe0WwR9fXTZgcz4H8vDDKmrFiTjQkH83WbQt7aqq9fa8ntTJGQm9zMurVpC6thCVBzkaixWD5WS4VfYqGCqNhzdkhF9vWZBoCr0sE4X/F9z7ZoTsUW+H2Pc23VSx805dgQYR0pURC+YTgAkcOtP19rTcvREu5VtZ8vmeEiPSNpQip7639X4u/MTZWfRhAx2rrWuaa1iIgP/OwsCwK3U/0bURQg5J19FrXK8kNVvQoAK39dWmTLcWe6PVOqCTe/IYr6USnoebaKckzrLiqi1HnvMNP8Ci/D9fYN8Y+d6hlIdrztQoINqRvZwRWJe96ZxV1FQkAVuxRj8e9GB/rh2+dSsau6WwtFw5o0Xywm7t/1OkO9A8/h3S3mIUeVnEdRjs+271+ogrEk576rwzNR4sX5sc9Bpt+uyvKz4h50X+mK+3YxL6a5dcvkuLv9mrDxM6Ec3ZWOxvWtx43EdVXB9+3jrBxvjG7K/ok5yvGmRjwbL/UYhu7gyZJ+/UOxloK0dP6jytubu61D892WWEeJ400F9k+KFI6F1ZdT3f7hM1yTEmvyd+2iKY1HQeko7v2UrrVZMnU6AOk6Fb2+HUfwu7bv/nPnhWiSO+e8c9+uu4VJhzsBUKtSAitDfzXZP3KDfjqkmAM0WXhcIpFIJJIiYhXL0YCqvDtpjSPy3XY7yp6fxk0mSN8yqM3YEcYCsqWJrmltGswRkU4f+hwmct0rRI4oeyH+umZipLtl1dfc12XQY6Bwf9j9ftBq57y8pgZz635njLLLjbnl2OjT0fjMtk20ryoqAq6JqNkHLargeuAS2deuP/S4lL5N2PC5tBwfFYPrbf6yLwlWC9f5zORwfmvgY7Moy8IsyNxW4KNYmrasnpOblL5NuNFBTJm473Xki/HzTJ6xVJ3Y1vaj10qc2J4fd/uJ+q9/TZ7DplQx9fTxZy/gubiM9IxtUgv2HANESklys0oA7Jg2B4Cqf4jgxIjBp4rlWrWpW7WodDiRwmiPswBU3/kyIX2OWvN0RUZZS0RNzd6wiD3plVnRRfRVNBQAL0tcWxvFwYbfUvUH0WUk/DXrdpPQtqhLRgURWdfl4z8Z7SFcaebK8eWLHa0+11hSkgdG8+v/5cw5rrgn5otW9Wwt5xyLwPVxTTnwunCxbktzZmbtBmgfPHjIUZYjt+IrimJ7mKIsLeVojt12P36O2GhcPpYpnqvXh4/A/tcDFj1X1hP1mbFIKJmzmT4s7NsNsH6EeUlQOIiAC/utHvwYnlNZrXPfwSh3PHoKR0HPc6mXjyuLGMKlu+x9hePNljKls3hpVvzSMspRVU7URtWmpRfaVLcouKxyh4aWkKpoKP86jKGnxY64eix8uR0Ap5+fY7JfV6+jLG0lHrTi3LC2oMXovbgqcwoCLIpvDoDLmXOlJdK/iirP5Mxzj1s+iKAHts0LtqQyKyuKEWBmyGogp3NMLXuRwnW7mj2+vxZwUDFxPH7Z2Nz91/veKC+Kjju2zJ9+VBRVQgB42X/jQ/YsGXLOUSKRSCQSM6TlmA8Gs71VcJxVvj/mw2riPD4ZhPUrm1ZVUdCcjCFsvH7hedNtVe2v8cBXXEc324pVKKqoCPyWiMbW7/psJXcpucS9IoXHRVf23OdlicvviEopv4bOJVkj5ngqb75XqsUzDJT1QgEPI7ttfdyUu03WLbgbDIDf3IOWv8aZOXObNR2vsHBcewCCtgai2n7I0mcrFonDolHo6xHerq1l/BObAejiLLryDL/cCgD7i0kWLVtYasoxpU8TXnKfjuHl9GzVwxzxENVhNMnJpSUWAEl9RcDBhgBRHSJgo2jyaakL3zJazNMtCtxBtR8GinMstCtWMM2D3ndRoiDyG9E6qLTa9FbbMYijLXP6Y0y52hG3H6w7/1kc/JZcY17gDv1SjmKsuXsglT/UB4QVMg//2NOkFvW6nAJEdalWB0UDcb/9x0tTqmIrRUu7Uy+9LwYOWjsdbvE56z2P3Yd9+V8jpZsbl5eJjjDf1p2LR67gMICF87oCUDHD8m5r7b17VFshgvkWP/sVJ18U77y7L6Tz8c1WbD4rBvKhL5wp8RRQYahDg3lQVXR4udhNwedtc6ptNXTYZXyvGQI4DdzVpvPPBlGDOjDestdHulUlEolEIjHDYpZjas/GALhcelCkSKdqY0+YBEOsOVOXkGTLRquqwkO4NUNMNiffdSmSC1Md4E+HsbsAkeRce+8LBJy3bHJz7DQxGvvxk2OcaL4EgPV1PfhoTn/8F4lr8LCov5Q+Ivz6j/rT6H72WXQnrJdwf3lNDQBONf2WLJ2GNsd7AXDvV1/jPgrlfZOOHEoLO4AyOzRg1Kyc5sR77odxrN7Dz3HnhWgajhHuoTbup2nrdJ3cFmP9/f0BCH37PhorVwD5t6Oq6MMTi3YZI8y3pTkSOFxEJJdGF46y6EId0VtETxoKshvYkurGHynV8j3GXX2b9V7b9Uumr+SWx3rj/4OY3inJ3WmYKkp5ui6JdUVwpg4InfgPoRNFqtrnMztzdqSoP72j/xSm+O5liq/wptR6ZzRBH1jecjUEJ/p8l8SCwB8L2Msp37WjEpqzZ2VdAr+wTiBYsZWj0tGRuA9Fh/XVvWdQSS385Pe0Ou5qhUJ6Zvdw7OOccL4qXmIVdyVxZqJoH/RjpbmAnfH7QqdpLO5PT4r2ZUKkKOG08OUeBe6nqF+d+O7iR1o14Atj9Na57HQqfWrp1zy4rhY33LJ9LTm2Lh6AD72P0u2NWUwfLNJIFvzezri/7z9ws54Cba5SfG93XAtAqk6HdqgzumzrvJ4UDWsyvvpvAGTpNGTpNGyt8b3YWCNnP/NUjoszq+CK5dyqFzur6eaS426vZr+bVxsNEwu53FXqwEqcfjOArzuJIve17f82GYSBg3EOZ8OAVvgfEZHJGitdv3872lZ1Od9dXL8fe8ykur3amHf3+on++F0/XZrilQhrRKjuTxHKxVw5dnK+Ryfnoudxt9YPQD0G3kNz42aJZFJ5eJD6g8hf3FF9DlX/FHmB4f0Po64cyM12Im8wvYKC4E2iMk23Wi/zd92VOd+RViIRCkThLBTfgsDNRdq/e2xXUjKE27lc70R8U6wXIS3dqhKJRCKRmFHsIgAqzwqsO/ZbkU5isCjuajONdUsB5t0J5eu5XQDw+cqy7UYMxM0Q7seV3Wex9V5N43qDPahFwaDyB4xyKVGw9oEoTP1/s/pTcZZ1c7fUlQIAODekMm07H+Ltir8DUDHXdTLv5whwIVtUIukxbwKVPrWujJdWi+t2rOnSQmurHsvU8NxPYwCI/OxcnlqmJaHiP+VYHPSnybprGjGcva3J8UA4KDSE2+VtZgyw4p4f0xY/S+AiYe0UN/DrcSgCkPCmCCyZP2y2SfOAC9npDHxDhCiXdsBVcdyq1s5nvPeceN/M+3yG0QP1KFzTpNF5zhsELdJ7NJJKXkhD7eeLy2oRlboiZCtxWSLC+MOEp+jseYw+bjfyHKNEwf4MHX03jQAgctxBq3inDDWu1x4s2HKckRzJd3M7AFBxwT6Ly2H5CjkKBXf6ixshsX7ObjqPTGKeWJjvIavu+/C/LcJdUOWrRLTnL1k1Aio3mR0acHNojm/gWBPRl1CLjhuaNDrsFy46xX53gtaLgsC2KpydG2UdMS8R37086jp3AJhWczWrkxqx56pw2WRkqImYoJ/ruXzF6jIVVTl2jemGrm2CVWS491wTGr1xwDgH8ijU3TsAgKD3stGcLHmB9sdBOd5aLzok5O4scSE7nQFvj8d9RdmKQi6qkrRlor8qPIRzA33p0NHQy7bwa9buxLMAKGZ547jR8uUqDQ3nr/Wpyp264p27pPXXbLhTh5+O1Muzv9duO3z+vPpYNP4uk+XjJP8OMrqIEjzJEXYUNAHboM8xrj9fwaqdVRRqNcl99LJEQeiHRcvD0mXpR5oW8kw8bspxVIKoHHS5nx+as+cLO6zUMVeUZanyjaRsIrtySCQSiURSRKTlKJE8Io+D5SiRPC5Iy1EikUgkkiIilaNEIpFIJGZI5SiRSCQSiRmFzjlKJBKJRPI4Ii1HiUQikUjMkMpRIpFIJBIzpHKUSCQSicQMqRwlEolEIjFDKkeJRCKRSMyQylEikUgkEjOkcpRIJBKJxAypHCUSiUQiMUMqR4lEIpFIzJDKUSKRSCQSM6RylEgkEonEDKkcJRKJRCIxQypHiUQikUjMkMpRIpFIJBIzpHKUSCQSicQMqRwlEolEIjFDKkeJRCKRSMyQylEikUgkEjOkcpRIJBKJxAypHCUSiUQiMUMqR4lEIpFIzJDKUSKRSCQSM6RylEgkEonEDKkcJRKJRCIxQypHiUQikUjMkMpRIpFIJBIzpHKUSCQSicQMqRwlEolEIjFDKkeJRCKRSMyQylEikUgkEjOkcpRIJBKJxAypHCUSiUQiMUMqR4lEIpFIzJDKUSKRSDuL220AACAASURBVCQSM6RylEgkEonEDKkcJRKJRCIxQypHiUQikUjMkMpRIpFIJBIz1IVtfFLZS2crQSSSfwu/aVcrSluG4iCfZ4kkLwU9z9JylEgkEonEDKkcJRKJRCIxQypHiUQikUjMKHTOUWJ7lHWqAaA9csr4WeNkB8DZgfYAKJw0xv1fqbcDb/U9VkVXF/smJ9tSXIlEIvlPIi1HiUQikUjMsJjlmNK3ifj7zD2yYssBEDHnEtlXEkz2e/BsYwCS+9xnSb2l1LdXARD99kg8lv1jKXH+lVyd0JT1oyYD8F7CU/xfwAIAKqmd0KLN9xglSrRoWda4OwD2v+y3jbASiUTyH8YiylHp5sbqz6YC4KdyBqEnea9jHb7fFY1O7wac3fpbatvvytkPFdvSHADw2n0dTZ5vthyq8u6c+TAKgFfa/YZWJ4zmm5lu/HyyDq0izwKwY181vA6KbYntMgCImJstvmTPMavJp2hQgz/HTMFNKa7H4sq/AQ5FPj69ghhk2FtDuNw0qkncaHHbLGm2hGYO+SttgBoLRwEQ9MHf1paqUDI7NDB+Tqxtz/0o8bs6XLYnbMElgDyDOIngyltNOTJqFgBLUgL5dFcXoqYK170iPYPsi5dN9lcH+AOgc3XO9/t0l6+iTU21osSmqKpXIaG9JwDuHa+xrcYa7BTiWcnSaagzezQAlRfGoElMsvz5vcS5Exb5cKjhCuP6FG067f83HgDvXTfQnD1v8XM/7qg8PMQHpWmmhi4tvUj3oEKnKzj1qah5Uapy5dhwentRdjWyO0PJwJ2DiHrnGgDZCVcf6fiioqroA0DjrVeY6HUUyLG28iO/bUMutQPgRnSKVWQE0EXXZsOaRUWWycCgi0+i1Sm401PMS2pu3LSajJc+aMrmlyZTSe1kXHdDkwZAlg7a/v6qcf1rTX5jgPsZALqOHIvTun1Wk0sVEUrCU74A3A8S18k9TLzAx0T+yQtu1/M9Lj47lRFxzwOg6HAdXXZ2kc73OOU5bkw4mOfeU+pnYw5nahl1qq/JtncjNwHQwfmuyf6G74haM5qIsXseVYxH4t7zTQgfewqA1/22UsVOZbLdIH/u/6vZB2PwXGh5z5WuaW0ANq3+usB9XrrYjv3bxMA9+L1/j/dMVU54CHMrH11mlk0HP0pHR5SeFQB4UCeAiz1zbvHfn5gBQJidKxpdzm/9xvUGnKifsyzzHCUSiUQiKSJWjVZ943oDjt0JMC7HxVekwl5h4VT8/iQRKQcp2li9+MQPCQdgottW0nXibM4Ke25rhGvtr/QAtt+N4nlPMZpVoaWKXSYA97Q6LmtcOb6iBgA+WM89aHfjLr+nufGE0z3jukb7Bwg57jrht9EO18tpeQ+0oqvXwN3+wk/+x8uTOZ/tTLsNrwDgfkqFz7y9YiethkgOGI/5+Ykn2PhWTQBcT96yqstcuTCNQxGz890Wn53K8Uxxz/3vUncubAzF+6j4fVO91eyePBeAbt6dyb6Wv4UpyZ/a9vBXne+My4V5OAx4ht22iizqSuI9EzvZmwMtv8BZISYYtKg4nCFsgOlX2zPKfxvRDjl3o2Gb5/EHVpFLue8kAHW/HM1PI6YAEKJ2NNlnSeVt3B+4GYDLLygZ/ME4HJOFjK47YtDcuUtpcGNMU1wT8j65t+ooca6VzB/1hDVcTpnz/3SJ6QptLW85KhzEFJMqwM+4Lm6QH0FNrvBL1XUFHGXq2k/QCLm2/NyEwCK8yy3iVkWh4NIqoUBONF1mXN3szRG4f2tdF0pR0UXXZubKrwBwUWrp+eEEADwX53VjpD3dCACn6+k2UT4GKv5TjsVBfwJifmdd21oApfrSVoWHMO+P5QB4Ke1p8/ZYyn9Ttlw/dtv9WBch3HnVlo6kwomc27bCritkX76S73HxP9TiVPOlAHRrUHTlKN2qed2ShvX5Kcfc62suG0PI25a/f85/VweAE60WArAspTIAX6x8muCpR4S8endf0pBo43FGpWiD5/zKW00BjHO4RaH2Py+Sdtspz/qIJZko/jlqEbk0resBkP32bYZU/su4vrPzZRPFVxSStWn0C2xmEbkMqCsFcHpCIABnn51b6L7X9Apwb7q/cd3Uc09yf1tFvI8Ig8ju94Mmx0i3qkQikUgkRcQyblWdDo81LgBkN9WgRkyAJ0cpcLfICYqP2k8EarywdD2hdsK9Vv27MYTlYzEacFprveCRwrg2MYzTy7YCMOVwe0KvHSkVOXIT8355/FRi5DriSssyZTUaotHGBW7lSKZwmYdNj0GTlOO6K8xtn3XdmWq7BgIQejfOWmL+K7nzgrCu7BRHyMplb3Y+8zSXd1cSCzoFWWHC1a+47sDMp5cyZk8fcdy5XNaOQkfwOhHMFnLQ8vePsk41fmlmcKs70Gj/ACq9IgKygq79nceWtUbgTVGo9MSlfNdvSnWnk7OQV2lmrxyNXmayfFJ/n4/eMob844Efjey29flkkUgZa+hgbkAV3WqcdScUgFUfdcSNknkLFWo12S2E1+zGmHTeqbaFXq45kcRJWnHPbbgfBsDn63oA4HxVgfsFcX0cN+S8w8txjnKce2Q5LDbn6PaDuCCnP9NSU5+7OPf5BUz9pLFJ9FJqD5HnmOmqRGOfv1vTkmgCvAB4xjWRk5niMQmbUHZe8AYUDWrwwZLFhKvFwzGy9na2RjUEQHNapJkY5lVQ5TxA2tt30N67h6VR1qoKwM8tviJRI264hJcCgFiLn6u4XBwuIvxaO24jcvUYAMKTiv5g5o6aLHym7PEio1NDVn8i5seydDk5tovuhmL3fDqVb+X//Hz5elXCOZzvNmu2A7nZyJ0gfQT1kpRAKr2SXObmj9OfasRblU0V3YzkSAB+G9aC8c8IRaRTwW9PTzX+P7mp/c+LuGx2A6DCz5Z5h13obpePUhT8la5m1FEx2Ek/72ayLWhrNk5xicZl3W2h3N3ulHwa7cr4Rhwdk38MwRvXG7DnM/FedF0t4h1CsM77XLpVJRKJRCIxw6rRqq0ds/i8dgSOn90AYH7IGiqoRAUXg/sg8X1hIr99tROXJ0YAoNp+yGIyJLwjRr1atPRZNg6AICtGnRaX+G5uNHDQAGIU90r5s7j9lA7A/PMtANhYaykA7sqcVP//u1WPTQtb4LtYXDNterpF5LkfLhziUXZ2dD7TCwDlqbJjNSodHWneI8dK8asq8jvjvmhisp/rRSUu18Q9UC72HorT5yx2jf6r3AtUU1GVtwDFYPfzJGz14L5GbNPqlPxxUTyzTlvd8FpQOh6Z7M53jNbt9ttVypTVaKiP/NaMZbRzyvGgadHy1aFWAETsPkT47pxjhq8ZjdYul92iN+yCj1wwmTIoKarwEEa122pcjs9O5cn1ojCB7y4F5bedJSDxZIHHWzrTQKEW6siuqen/mKxN4+Xzz4hzDnLCNW6vhc+cPxZXjlOvdWBZ5T+My7O/n0uY0UWQ10vuoxLrFgXu4K/F4g75ZOCLKP/K3z3zKOiia7O+3hz9kgNBv9wv8Xdai8zgjDzr+pcT1UcG1Ple//DnrX/zvvcR3nv7ENWbDQEgrK9l5inVD0QI931tBmuqrAKgb/BzZMfnP2+irFEVnZMdcc+JuWeNmwZFunCvV51zC03so/v8C+P8O3XZGDDHuLyj5hrxoWbhx32aVI0LqcLV/vfmWoTMjRHyWqE6yn+R930Omkar+ouKV0TDoldD2fBCSwB0Bwt+qVqamj7XCtymquiDwlGvzG8l2TRBHeBcbzHIzK0YAW5pMogYkL8RoPzrcL4uPUunQ93+UsVYj5y59lmJrYkYnaN4rJl+lR9Kd1FU4ECD70zWN14znvBxts96sLhyPDerKkzNUY5huXzny+/5Mu3rZwFwP6dBp1IQMEbMp60M+Y0WjmIs8sGyxXxcozlAiW7mpJrO+KsLL8F2v1djsgbmPxq7e8QLnwNa3P4UlV6smW8U9eZV+vzQmW9CNwDgoLAzbrNTqEyCInJj2Ha61WIA6r45moDPS24Z2/8qchY3PAiij5uw/C/1roT/5BzlmNK3CUldheX/a9M5JpVzAJT6Ie97LetwuLkb2geWyyV7q9ePxs+r73vy1p/CuvXdkfe1cj9ArFM0T+b50EMsCNwpNgzbycGXxCtg8OyxVFqq/50tODr/t2JQgOI3VJptUxg/5Wa4+0WGrv8GgOrfjCLkLdtbknuORBLQA7KGiMHOtKqr9B4ZaHW0DxX63rJZ3qDCwYH3n1mVZ32qLpMnlk6gspXmyh5G1hP1AZgXNRewY+2D8gCcfK0mmU+J947jRtsHJWpThPHS6vizxsFubFY6oWvzGg62QM45SiQSiURihmWKAORC7efLsJ1iZN7FWYwEDCOTT6f0KzCM+tx3dYhpJSouqBRKwn4YDlAiczpxaDR/v/+lcbnpRyKi8W44jOj0KwCDyp/EUZFjQOeXyLzynogS/ei3HiZuB2tg6FqSMTBvX0a7b0UNQXW6lsTqQubw9udZHb7BuE9MloaJXV4EQHMypsTypD3diG1zRPGEC9npdNo5iv61xKjyXa9jxtqqnQ4Oxf9zNYqDZ4zH3vwxBIC99b+j/ame2D95scTyGEgeGI1G72V+1LkuRUPhe43r7cr8niKMvbVjFqOviiTt+KfKFVqj9r9eBEAVGcaZMcL1HNNjbrGKADQ/3I8KT1l3jtownzd33QKjh2jIpXYsDNpWoIzVVo8m/FXru+jUlQPJ/lrHxlzVWwzPSucZb+A3vfTiHmIXiGjPuC7zAdDqY4mzdBpjUfYMXRZtj75AUowonF5lnuWnRgqUb3ED4jouMC4vvBvI8kvivVh+WFaeYvclpaDn2eLKEaDFMRHw8JanKP4btWwkQKGVMdTBQby2TVQ5ae2YRbI+l6VP31HFnn9MHBrNnvfzhgQrURhviH0ZCqZd6UDMLyKwQKeAtOAsAEZHb6OSfRI9XISbzU6hYmmKKGS+qkcrY4pFaaKuHEiD9ed501NcI5VCQdUN4npHDi+5a0RdKYCf9q4Fcl6KqTpRfq3ziX64/k/MMbLveJ5jz00VwTGn+8xhxT0/Vlb1z7NPaWPIlYybG8Su5qL6xpRbzTk2omaBVVP+68oxN5kdG3KxU07h7spbTGei0seKZ2N7re9NlOO4qy2IbydGL5oU6xTsP/uNqOwS025hnm2704V78OVNQ4isISokbaiynkYH+uHT/Uye/S2NOrASmUsVbK661rjOqBxnvoHftFJUjvNEBbC4rvOKfMyeDBi8VN9l5yMry96oJq+s+BmArs6m987SFH+m/tATgNBFFy3STUdWyJFIJBKJpIhYxXJseESMLj/0PspvaU7Matce4KHm8PVxwq116PUcay/ix1eIGFM8V6Y6sBI11otR40c+OU2AlSiptmOQ+P5P0gp1P6oq+hAzTbhVz7RZZBwZT0qsw57adgUeZ2v+d15EvjVw0BD1+zAAIl60TEpMak/h0vAcG8/JPaGEvy+s1IelRCS8KX7Pw2NmsfJeRVZUrWQReazF5TWiPvDx6G+I/HMQ4f3z91g8TpbjwzC0LXr10D+0cUo3cWP2aCPagVnLHWewHE+3m29ctzfDjvGneuM9TgT3ac6eJ2668GCcek7UNO0W0NAq8piT8GZTmj0j7qHZAbuM6zN0WdRfOo7gd0snIEfpIrw9CSuCaOyXf/Q5wHt+vxKgyskweCauEwBprW5YV0CARmLq48FHD3gj7BfjFF1u+sU/wb3nnEpsPRb0PFslz/HAIFH6J3JcAyK+yER3sWhh3QHLhZLaPVpZaBPdopJ9+QrH24hQ6p5uPUy2hd08DYAmo/BIKM2Nm4T3F/NPNX54iWPNRVTom56HaTNgLECpl1RT1qmGr8rw8BW9QXJRcf5JDE7SfoJQbhS5mkzQj/oQ+zFQ1eEaqiqtAdDEFK9UW9qvIbj0FL+FJSNfDVSapncfroEnIs/8P3vnGRhVtS3gb0p6IR0IEJKQhA6hN1FRVMBLEwUVFRGVDopguyo+CxYErjRBQBAFFBVBmooooDQh0ktCSeidQAKpU96PlZnJpJEyk0Td3x8yp25mztlrr06Sw+/wzyO7mZTwquOyBi2elKcxqt57UhlqQtNYFv0iucAxHx4n4EKCXRqCLrNi1jI1PtjC6S/FlRD7xEjeGvglAD28kln/xEQGvXZbhYzL8u5U73WIwkUjDI59llWrv7R+nh4hEeKDIx/DcDzJiSPE6qbx6gKzYroyeqzEW1j8pACLwn/h8a/v5npf+Y4d3RPYKcLRkuMU9VgJy0YFiv/nbLY/uDkm78watu2A8O3sTNvXpdNoMJZSDmlcxBeT9HoLqv4pr7HblUz0h5IKDTPXBQdjiLL57C43zVnRdbvK9hZfALY0Ck1y/nzIiuBsV1t7mVBdJtkhUoJKW8o4oU2Nv6fuK9Iuyxmr7hpTbN3Yt37djOqVsFhEZeNqXSl7VlPvhgmznc/RfM55jbfBVlZxW1MX6uTU8ywoNy96Vk5XliecOpwCsUzYNd87y+yNskDv8c1nBOvcuLxSysdVezalXAsXZHQXn6P33nNFW/MM9svgC5YIOGP5ZkAaE45R7zlZaN+1cgivTJEyfPd4pPNF+Ho6N3oWAFcHC0flc1QoFAqFIg9OLR9XEjQurtRYKKuD3BXYKyuXjJn4HSl5cmpa7zZUf0HMinsipoK4PtGi5Z3LTTh2MzjfOVqNiVifYwz3X5N/XwGpJ1FflW8VkMK4EW4b1wmDJy7nrgGlr7zRbk8fDg6Uqjgf9azLomMtATD/4U+tFbLyNh45Xuj5BXF2nPhFI/5znLm15Pu9Yc609n77N6GvIZaJhNG1ua+T+Kt/3NSMOi8UnvqQElXw9h0XwghIrRzlBq+3rBxR0vpLtgYBWrRsa74EgDY9RxA8y3mao65qCEnPyg/VvOtBPg2TmI6GK0dQ/7WbdkUvLD7kCw83ZOSY7+yu83xCPwA8TiQ6fIyjjh4m22wTR0lZkkq04mxTkk4H0TBCtMLnayymuZtlvGItu9hcNNqaPzl2TGUSjrpAsQNfeLCudVvwzpRil47SuLhy6Smp1hDx2BFm1bTV+bO0IAr/wdEV/EqGzq8KaUvF3Hu80Wdkm0XZXnGjfolqwGpaSrDH91Mn46Mt2Oz5atBuCMq/vTgd1s8aZDK/e9ULxMRJEIAzOyEUB11Nm5A+klUN49GyvVT+Y/WMX9QUkGCvsQE59tlWcGaU3Ouq0YXJ5+/h98PR1vM0OS4nS+xZ00gxs70Z9gONXW2/4XtXJG9u2SedCF5f+Tq3OJvEJ8MB2N//Y+u2e3vsY8YLMXbHnXhL2lnF3h3P5rCPcrY635SvjW2AaffBEp2ja1iX6HFyjhYtg052ApyTWnJxRHv0N+UhC5if//nJrOXvlPveiuGbN9HF48dcW2TaP9pjFvPurMmyc80AiD8WyjNtJEf9pcANdtf4IrUa2o8tk5PjhePWG9H8X7A0b9ZptOAlATjP+SdhbGCb+3QaLUazfSUuayuw9xw7JmVWVSgUCoUiD2XSHM88Jj3//nrRlnpxw5zJB5ck9H/pwRZ47fDAPz7btj9UbnntrgzaRiSyuvYM8jLrem2+H3YPAC4b4soyxAIxdmqOwV0iE93W7ij0OMPdLWg/eSsvB/0CQLZZy+o0iX5dOeBOIH/ie2Ek9ZBglMK0xtJyzpjOfXNfJOxnWWlFb9teoRqjrqoUSYh/JZJ9HSzViXQkZuY3F5cU44F44jqI2ef2+4fhdUqSqo895MHr3ZYB0Mr9BPPDNkDYhlteb126L49ulZqstT7Sotklmmhw5r9PawTwbn8JsG+4q9PYVu368DAu3VmDA4PknZVCGraGuFo07JL6EGRsDMKRvT/Terdh4f8m0WPaiwCEfmQfLGVuJxaFK409uVbfTIe2oi2Orf45dV3kXd+a6cLp8TG4sNNh48rNrldn0vTDYXbbLD1Yjw4OY+LDnxd0mtN5c8JAns9R/rOrZrHvHvn9PDSuDPI9zSDfnICluvnP3ZbjXZjxYR8C1jjvvfjrdn96BErA0sH/BqP3FIvh4ZyqaRaM5vwWtGO7JEWsDqcdOqYy5TleGiLmlR2v5xdwJWVdugdDf5NwsvrjEpxaHPiDxO2E6uXLfzyhH5kfVcfroNj8L9xbk8xucu8fmn9qV7j8jj2P4DdeVHrzjuILRpBmpwDGEZc5e0HK6QWvd8OQYyFIbi9P4aZOIlCCc7UMsphVG/8uDkpDph7PQzIp1VqbjGnPoRKNpSzoGsRg9M4ZW+6qOFodJ95szct9xU/R3+ectUD16jRvZj7cu1w6NegaxJBR05eT98kizOhvAI08xrqrLoT9ZDPTu+85WWSZuML4p+Y5Jq8WU/TvsbauCJeMmTywbyAA0xsspqlr4eXjVtwMYtrLkttoSf9xFFpPT4bu2U17dxHgI052J7mD+J6OTG3D+p6TAKzva7ZZPNt/ZbnzdmJ3Ge+7Ieh/dfxi28KaM38x53otAHakSOnEqm5iwv2/kPw5s9dNkifcdfxYAj4rvwWZpeF8yoAU1rWYS6BWJqFjhnQe2vW07LvqRc1VOnx3ybxoSHRc6cdioZUFjS6nU0dRWJq9mw2lc8GpCjkKhUKhUBSTMmmOlsimlHvqW7ed75NJpzqSf7T5VITd8dOaLeFOdzGxHjOk02vHYPRb5BqhM+Iw3yIh31GcHN+epx6S0KZR/vZ1FvMGv0xNrsfChffJGD9UeW9HFjZnWyepNGI0m62RpzogSGdzlJ80pNN9hxSPr/2OqcSBFJWZf6rmeGSqaBSH+tjcJAUFgxWkOc69Hsma/7RwbnJ42yYc7Sv5vQf7TeOOPY8A9m2pLO+rzwkZm8/X5dcHsMofgSyK+PnWByL1iTtMl8bCNd6vuHlF6+ODJidizWw0OqW4RmWnXAuP/x0wdpLSU8efhNCq11jf+GvAfjKov24I9cYmqUa4eTDcLRHGKc+nsqXZErt9LXY8BkDou/oSm57/LvxThaPWUwTPjS6NOX2fvAMJ/5llfR9a73iClAve1s70rhf01PkixyydnILx0iUnjdyGpllDAEJmnmJe2G8AdNr3EKlrqwFQY1F8hb2v+shwLnWUwhdfvzUxX3/TxnNHAuB73IzWaKbKl+XfwFeRHyUcFQoH8U8VjgrFvxHlc1QoFAqFopgo4ahQKBQKRR6UcFQoFAqFIg9KOCoUCoVCkQclHBUKhUKhyIMSjgqFQqFQ5EEJR4VCoVAo8qCEo0KhUCgUeVDCUaFQKBSKPJSpZZWi4tBXl3JZN1qGceohA41qS6dsQ59sVe5OoVAoyojSHBUKhUKhyIPDNEdL0eJjbzTFUC2r0ONiI08C8E2dn9BpbLJ5xJk27H1XGpZ6LP/TUcMi4RPpoxi8TYdfQpp1e2JvGa+xWia6c24Y3XPKTvrbxr75zqkE6TyYfFWaOm+6tw6Gc+cdNrbicmRBC9wS3cioLv3KOjRJ4Hb/vQAM9F2NCRNXjdLR5NGWz+P6Y8Vojjq/Kqw5uBGAyVcjWd9Z+gMazl9w+r0tBamnfD+HGBd3u32W56ygRqm373sQAN+HLln7wilKzqnX2/PZwGk8+vszALzZ5gce8cn/u/c5ej+ZdzjvHdK4uGJqaesS1GXO74z2PwrAFVM6d8wbR9ibqrtOYWjcpB+mLsAfAPNNmTM1Xp6YA6TR+6GRVfA4pSfsQ2kabc4ufL7/O+Mw4WiMlYnwwOPTb3GkYAJMZqP185TQLUx86xoAf/xeA+OVq2Uek65uFGu6/g+AyB4u1u0FteEpeJ8bJkwE6XOaaXp7lnlMJeHisPYAxN8zrdDxgparxkx6jB8HQMCPFdPFXl+tKtWW37Q2mR3uH8+Gr6X9uOEO598/I1R+mygXt5wO9bnIEYr5tgNrGi0C4OE6g+Af1FbLWWjd3claFQLAp9GLMea06Kip+xOdRsOhzrOtxxb0xH4TtZIetHL4uHR1owA49KIfCV1sY9Ci4fGkuwGI+60eYevTHX7vvxtHJ7cFIGJlFvrULI6/oLPuqx0i8+7qeisA+OCKLDReCszfUD2qprSka/D+OQwnTjl1zBWB43yOOfOOCZO13xtI3zJTTuePvgn9OHpUfGUtGiQSdzCC2XcvACBEd4OF38tDHHHzL4cMyRDghbvG9opeytGuThg8MSLC8u3E7iTurkFQ/ctyzOEgS+N4KzGfyj7jkaMOGVdx8T9qvyJLNcnnUSf/w9aESAACt7jic8pQYULRwpm+dVhW62NyW+rr+4qGsC8wwCGLnaJwuyRd1U8a0gnTe5BokM99po/jRh3RuLUZWgJ32QrwX4+CattFmLvvdpy14p+KPjKc0T+v5g4P0Sa0eBSxaLPxxsVWvBWyw/q3o7n+WFsef3U1AN9XOc6Ey01ZOVVWZFV/PoXxorTSCs+s2HekMnD0f21Z23sSAJd6edDSzYgeXb7jZl6LIFifUqBQtDD33nkAPJvxDFHPl104WvoDH367gXVb7TUG3H+3X7SefTYWgNQIefbqzhOlyuDrzrGH7K1GFoJ3agj4bg8ApvR0KKIblQXlc1QoFAqFIg8O7+cYuNmfz8N/AWB1WhXm3Hs3hsQTpR9hGWm/R7Stl4P28GVKLQCW1q9WYeMpCfftTwFgpP8RYlYOpe4c6dJtjjtQkcMqkCMz2nCo1/QCu8TPvx7O9IU9cbsqj1PQp85bwfc4eIVnqyQx65po1qsa+jv8Hv/Wfo666Ei+3/C19bMWLYtSpbnvwhHdcb2WWfB5565irB5g/dtw5mxZhmEl+96WADw5dTl1XKXp8hM/DCPquX9OE2Gtjw/ZLcVldfpOe63I/QpUnVpM/2nrxgBMXvop9VzEr7gu3YMz2f6suBhrPSxxlbw3tRYcQePjRUpsVeu+TF95t2+Gagg4bMT7mMxPHD9dZn+9xsWVtr2/+gAAIABJREFUettkzphYbXuZrnUrejbqjDE52fq5sPfZ4akcO0/VgnD5e1da7QoVjABbBzWXP1bs4TFfUf2nD3uAkJmV2ymvadGQu7w+A+C6yUDEt8ZKKRST3mkHQFyPSYALMSuHAuAemM7u9jL+gVWSGDjyY4w5C7E/X3Jn+TX5XY70qobh1Okyj8N0m7zgPb2nAx5FH6woFTcaBgFYF5nvr+xN9AIJ/nI5GFeAR1cwAOQIRIMDx9NjiizC+/tcpO6SYQBEja38glHr5cWNexuRXFfMmbq2yeh1Yt73dc9kdPh63DXZAPhp02jlttF67oGc4Jcp5+9h95eNi3U/XWAAxvdEGFgEI8CZbH++63UbxnibuygUcYUYAS5dwvN4knWfJeLCsty8tUG9BJhNnE2v4sgrWjmQZSBAl011ncwLAavNXGp/6/OUWVWhUCgUijw4XHOs80wim3dLsMtzATvo1f05vH6PB+DSAw24LgGM6NI1RHx8ANONHFOhwZFrShvmnfsB6Lj7UTbHfgXAgOFrWDvTzyn3cxQ3w7yp7yprlwtGM6FvHYO3ZMx7L1an5tNiRqrIhP/Mrq3YP9ASnezGOWM6MUNsgS3tnx0FwI0w+/PcL2uo9j+L5l52rREgu4o8c9V1sr69y+swAHu3d2ZOrc2ALZXjcLaY/3ovGUPEKypI41ZofXwA8Bh5lgyzgamzHgAg8uMtGIs60YmIZUUCQupuGEqdv4HGaOHw1Pokdp1tty13mtGGDBc+v9gBgDM3/Ti9tQYANTdkoV8fl3NUKiEUz/plrlWNNfW+tH5ekBIKwHcPdMQYf6S0/w2HYjYYuPiumHRjY0eSXUXsEB3u3M+ntTYU6xqXjensyxK9to5LMl2XSAR/1IQDZDetw9nbRHOsGpeFCztveT2HC0dTaioZZpmovLVu/DLrk1x7f7U/+Flo884IAIJn/wkm575qFj+YyVz5FWaDh80MXl3nwbza62w7a8OhHfJ/GTN4OC4/3/qHdiTaWIkme2rK99bvdH+WmTEjx+COTThafItB5TCmUw/L4sqSrhHj4grAzJqbMJo1Be478MR06nqLOS7m+TinLdD+7ty8S8L519WbwdFsqPZxxbskboZ5U99F5pme9fZwuFZNAIeY6J2BpkVD4keIz3DJHbP5M9PEyPGyeAz4fj8YbXOfOduAOVv8eXpSCOdkqe6p8xdBETMvwW77ZYMsdjSpaRx/vx01fpfn/kY1PdcayDvic0xL1Tk70egKnivNZjPmzIJ9zKXFba1ENNdapyfpDYlqLkgwbs0Uc/T8ix3Z+a3NtFwlyYjXt+KvNN7ZnIgNMv8YAe3vu6j5e8nGU/mlhEKhUCgU5Uy511adn+PMH5gTHLP9NTHLtXQd6dQV6fXdQWALykLr5QWAxt2Ns4/Ws+bMLOo1w5rY/NiPQ4j81oj+17h813M2xv5Fm0stJtegNxK5sScE44WL5TEsLj/bjpfGLgagp9dldmXKOMa9MAzPVc6NMiuKhLvExJY3SOD7mwHMTOoEQGqmK+nbg3ih/zIAnvA9w5EHxLJx++/D8F769zHNlSemoZetf7toTOgCJfLU2bmrReGTcI24HMXlw2o7ef0Hebl/ndSewN/PYDwr1XkqsnqLLioC13mSE/pq2AJau4mmazRr6PDSSPy+FM3GoYEtuTj0nkS5rqw2y2772ABxc43dLv/yeMHnzxwewYM+EgQYorMvgPJjuidTnn4UANcDpzBeulTm8eqixax6aYqefc1sxWRumDJ5+ZzkwG//shmha3OCho4cJ7QQ07JuQ9lz5Z0uHE8a0rln+VgA6n90GnOOj3F5tQ40X3KY8cG7AYh44Bg3/2oGiArsaEJ2muBJ+bur936ObwgGoJn3MR7z/cl6nFTIERPH4Z4z2N7Fhae+l0oQdV6omMnzQJaB4S+OwvuUVPc40dWbRU9I5Z9FET/T9OmR1Hq3fITjjTDo7SWTogkY+tFIAEK+rzhTW3bnFoDtZUg0ZNBrrvgbwqcfwi05CQCJ00vgu68kwtZr9QYe8pZFyKsTFjB1ab3yG/TflNp6V8J/lAn/x4PNCV4v32rg1gtw4TLGlJRyGYfxQDwDFolLpsf925hQVVwL//eBzB19jt4PwIG4cALrym98fXcQUZ+eLrdqLglvVSE+6rucT/aJ9pPemsm7O/oC2EWLOhJX/4wynT/MLxFbjKo9XTzS6LJoLgAd9vTFr4dEw5baNaHVcewdbwD2N5tv3bw+3ZNR34ywxgZUpfz83E4RjsPWPmn9u/5HZ4k+IULF7mtLTmZXz3B+WCepHt9EreHx9++RXR2cMSobUS5uTAr9w27bpCuNAFi05G7S68lDpXczsK/jPA48PA2AEbfdyZnHJO/HeOS4U8eY8Wsw7U39AQh83xPvzTatrPY2mNVFtKE5tTbj1e5ygdcoD26EiY8ipMJGAJebutl97jN9HLUmirAu6EUyHk0E4Lfr9XjIW4J16rlcRldfVtrGQ5UjSKGycG1DTl5wjntnSqg4bz4O3Yyps03vmXs9ktW9pJaxMeGY08cV/rpMmPvf86TDQyIo7xgtgvK7KKmYo43S2MoGxsLP/bx483APAPzf80SzebfTxhcxE9quGw5AyI+J1jqlpwY3YuvoyVydIsdV6eac+09rsaTA7e9clrlu+ad34ppqS8C5cl8Gd0dLINvPuxpxb7P97PhMNPJrDUzENBJ/7gPVd3Hd6MEYf3lPNjddSu/18p8obd1cXb067L/NJhRnXKsj43ioNREHKyZoTvkcFQqFQqHIg8Mr5JQUc3vpxPHl1zNZnCKdFX6+K8YpPjTDL5JT0L36Xlaclfte/K0GYauTMe0puIZg6sNt6fv6jwA8559kLazdq23PCo2MO/2qZLHuHj6NrZk63m93L0C5+B6vPS5myT/et/kFGi0YQcT4HRUS8alp0ZATL8s6T/uXDzXfK56JN2FmaxJ7fQpIKH3USjGf505HKYh/a4Wcy8+242oLAwn/ER+Wi0ZnfR8sWCrmLO3TCeOB+LLcrkyYO4jGc7y3OyO6yvu7KLE1ixrPp45eQvq/uhHMojaiRRmvXS/X8Z1Y2phZLaTo/dvPDHRKXMOlofKe+p60fyc9N0v0akn/z9qmErWsvZrK9dY12Dj1k3zHdKvRvDRDpf/h09YuLomGDJ7rOlDGeDChqNMcQrlVyCkpmi1SDHbUye58ES7pCmsi70DjhEle31lCotfihytizq3JiSId4j5fbePnOPnBl01vxrpGSwE4+EooMcNKLhy1Xl5o/SVf0XD6TInPt2DwsM1z0fobaPTl91MGLJfc0cZRI/nhyYkA7H1yKq0vj6balPL3PZrjDhD2UMnP8zytt+aXmTBTK6LsQQX/ZII+3UqQRkPPgHus2w5NEPNXs/pJLKmzhkd85JneOO8sZ9tWyDABrObSOpth7Vh53wJI4LHVT1rznV00BnBzK/QaZUFXteggucg3M6m9VvyzVxq5UfXXQg8tNcGfFGyOLK3PzqJAmICb071LeZWC6e9z0ToPL0xuWy5C8VYos6pCoVAoFHmocM3RwvY9URC+7tYHVgCW4BuXD1rAF7Lt8y6f8m7u3JBicrF/E+a/Kp74Vzo+WGrT7ODetgjbHnufIuBM+a20LEWGa4/fwrANEq36xCc/8MqQJSz8Oce8W4EmteJyWy/HR0X/4zGb7VI4YgbL38dGt4cXbYf56MsWKekM9DVr8Gj4Di4bJep7+rh+eFxwbKuyiysk4jkjLoCwtwrXHG/W8eOqSYpRhC45UmGVhkrDuTHt2dj8I6Dg9lBlRacxkTe6tyKoNMLxo85fVfQQboku3Wa7j9bfIKuLVHFw/XFHia5T10V++MG//sonD/YEKNTnWRCpD7elkfs86+fkQ4EElGgEjkP3m6RQTPi6L3ue/phTX0tI/S+NfCpoRKXn3B6JyowksYJHUr4cW9SMiFmlS6G69oT4tVKaSD7hgKT7ADg9ORovKi7vtSCOTAxiud8x6v4ilWmiVzi+h2dsVTErz3h2Ia1jB1Lr8SQAzJmZVn+8zq8K5x7NZHdGTl1FPx9wQJ5gSdG6u5MwIZauHeV3fzBgByNni9899MM87hGNhitPiZ38qUFr8NXaBGO6OYu7X30eAD9KF1n6RWo1+vucA2BM4E7Gx3UEYPX6VlTbasLz+/J/lhwuHLO6tCKph82/6X1cT60FokUUVAe07k5JjO3hlcygk5KeoNm+39HDcgguF67zS7pM+k1dM9FllHy955ZitgYxdPVM5dCXIky+ntGZal8dLNJJrmkpwQMbJ82wbtuc4ULYTxWX6GzBPeenbeUhguUXmlTgaIpG10AK/D4XsgDL6veyMZ3w1ZVP2ykPXmuxmvAFl1l5TSwhq481JGipLb9Nf1O8QZbyXpbygfEDfdnVZzIAWzP8uHPcSPzXyCLP1+U4mkpS0s0y3p/az2B9eiD+W5zjZwQ4N1QE3qFlsKfNF5Bj0Pk4OYpP1sjCwVwznW23zaDtV5L/XedI+aYq6Pyk+4VpmTcJdWfa7Wv/oAjKpA9zjo0Rn/KZ+6uyZ5wcazSbWJnmi59WUlOe2f4UkQvL9n9Y2vN2spaLQB7oe8ratmpi/+0kP5LBjDdbW4/9atXtAE7PWVU+R4VCoVAo8uDUZscW6n0jibB5m5DqqobQd6NElfX3OcfjSZYiAOVXlkrXIIa+yzZwIVtWU7829ir02Izura2F1P/M1PBWZOnClhMniClq34Cp1m1atHTc0w/ft3PK2m3dY3fO2XHt+e/TktTb29vmy+j0wkh8vnJe5R6Nmxu6UDE3Gs+eL7TYcOJXTTjQcb61KPC7kSX3x5YH+hqhNFgp5pv3q8ah08j68PZ9vfG4r3jm1H9aKsf559qzaewk3DUFG5JOG+Q3f+lkLwAeDJG0gz7el62F5+t/O5L67yWSOF0qT8VWP8PpiVJUwWO5482XxUUfGc7on6UgwL2e2dSfPQxNjnek1rvOi6zO6N4anxdOsSJ6dYH72+56mKBH5Dksa6PgknJxuKSB7Xx1er59cVli1Rrw+Wg8ml/h52bSk9Vfm79HqqW7x7w3e+HzddnnIH24aN0ZdYJJHn0DgBfq/kJf74J9t9/fDODdGf3LXHa0sPe5XIRjp30SZ+/VxVZVRuvjg9sqT76JWmPd1nyKBHeEflR+6QDt92TxctAe7t7XL98YLVwdKMLs7f9+RicP+dGaLBhF+H9LaUrQigAxdWjCkHlSXqqHVzImTJzNmYgWXmvNwvViPmjTJp6pYavw1IgJ+oMrzdj+lAgfZzdANnVsxqqvJBewe99n7CqKaH18iH9HclOX9fiY+q5a6q2QhVDMMOdOiFpPT468LaZb94taanxw62dGX60qtVde5+PQzdZtTbY8CUDkmORim//+acIRIHYXVHe9BsCjvgeoonW95fW0aK1dddyum2k1Jo6J1eV36HaojzV1qiJJfrIdm98VIfDaxRbs71Gz3My8Or8qJHeT3MBrMTYjnT4NwhYew3D+QrmMIy+ZP4cDsL7hslKdf9KQRrc/hxIxLKfGqRP9pfrwMIz+PmRUFzP/pUFpfNhU5sx7PW5ywZjOs8ekDJ/mUROGcyWv0FPY+6zMqgqFQqFQ5MHhmqOmZSPMH8gKdFW9FXb70sz2gSOeGtvqtOnMkdR6Lyciycl9HQGSB4g2uOHdj9FpNDT+fRAA0S8lW485MqQm5trp/NhBVp5heg/axEkl+uBeRx0yTkvVieOvurD3tnkFH4MWEyYmXBZtcVtTlzLft7jk1hxbTB2Nb5KJbC9ZaLUZ+pddjdrvb4Qwv27tchnXqdfbs2fINOvnRgtEg6lyBLzOZeOSkg3AtbqeXGorv9PI235hpL+tbur3NwNY0DMn9aQE9VT/iZpjbo6/345JfT7Pt/1oZjXmf96FpcM/AqDf7kFkZsqzeHv4MV6v/hOdF0vB9+jZZzEknnDU0G+JpcuOKT0DTEZrg+Ymm1J5IUgsBT1ffAHfJarzyuVnZe5b9drEfN02ikPbXQ8T8J+KS9LX15bOTgffDCHh3k+t2wckdeZ6H5EpJdHKy82sCrbosGMv6znQcX6Rxzbc9BQAkY8fKNfSY5YHZMv4qXbbLYKoIO7a1w+/Z0TAO9o0o/X05OqDTblttCwQJlSzhS4fyjLxyOfPEznvpFPuXRS5haN1rDkGh9zfU/3lI6g/6QKG40nlMq7Mn8NZ1/A762cttobG100ZZOQ811V1Hnb7Eg0ZPBD3LAC13jRi2nu4xPf+pwvHW3Fkehv5wyebr26Xjvb/O3svidPrVpjwsbzPqeEQPfU4Xt/KXDI5bAV3fCtRoVFjlGDMzbGJ7dDXvoHRIG6eQL8bbG661O6YycniN17/eFtOdZG4jKpxWeXeYL0gtO7uRP9hZFJ12+96/4MiT/LGbBSFMqsqFAqFQlFMnFp4XOvlhTkmnPgREuk0qNUfvBQoASSPJ93DtRHV0cRLhKApLa0styoxuqBAAA5Pqs2hzrNtY86jOf6S7sNLc2U1Uvvz45i9xQzh7JZVlQWNmxu6atKQ6uizNfnxsYnoctZZd6wZQ8Qy+a5cf9tbro1lE2a1JqG7rfBxbu0wL5Z9L55vyYEhDTHv2Feme//bNcf0nLZU59vqqPOm5MWZMio2R9SiOW58Ywpr0qpae4623/VIhZoAKzNaLy+Zd3NkgEavt86LFsxpUk2ovPp0lhRdUCCN10mS9TshcdYAu7CHiv+Ol6tZVaH4J/NvF44KRWXi6lM5LrK3p1vjWh6+/6liVx2rtF05FAqFQqEoLYF7JU/Ukk8PUO/yySK7LRUH5XNUKBQKhSIPSnNUKBQKxd8W806pxR2VK4DWEXkPSnNUKBQKhSIPSjgqFAqFQpEHJRwVCoVCociDEo4KhUKhUORBCUeFQqFQKPKghKNCoVAoFHkoF+GY1rsNab3b8NPZ3aw6E8eqM3Ecmd4GfY3Q8rh9gWj0ejR6PW33ZKOrGlJh41AoFApF5cOpeY46f39cl7vyReRkALLN7ta6paM6/cS6j5o48/ZFoqkXBcAz/nNZ8r/hRDySv9u0vno1zAFVwCRjLklbI2eQ0V1qWk74eBYT7u4N4LS2QLqYOgCkNAniYgtZQ/k0usKfzb9Cp5HPt+/rzZUbUmtWowGv5b4Erj0KOLcBKkBm11asmzvL+tlFI50F6nw9BJcULS43ZXvoh+XXOFtRBK0bA2Dy0KP/6yim1FSHXl7XsC4Ah0b5Mv6OFfT3OQfIc3H7PnlX2gQnMaGqLRnORaMj2yztzCZfrcc3UzsDEDinlE3MHYAuOpLs0Cqcayf1qDMap9OngdSvbed9lJd3yf+ldt+y1QdW3BplVlUoFAqFIg9OKTye9oD0e/MacZoVdZdbt2vR0mLHYwDUfMVQYZrY6VfbM/pxGdcg39MkZGewILk9AEu3t2ZQ+00AdPY+QCs3DQZkdXnXvn74DZW/y7ORqwXNrzUAWF13JZ2fkp6E1yNduFHLdsyYXj/wWaL8X/ze9USzpfh9zSzc6NuWp/5Pvp8nfc9aty+/6ccVo3eB5wzylR6TUasGAxAzeEeJ71sSXDZU57voH6yf8/aYzDBLjYyN6YG8dqCnnLPGDwC9NBrA74vSaQj/+sLjOVrg+fY+RR5W/yHplRnilsobVTcA4K/1oMOevlTpdtQhQwE483J7Fg8R61RdF53dvqL6s+bd1+HNUYDzNMebfWRePNPZjG+8vdEu6D/y/rwesYqO7gbOGKVLUdcdg/FfIu9cla2nMJw5S6VAo0Gjz2m6bjbZevFqdeXSrN6RlFvh8ZPfNGZFa3lQa+td7fY1mT2SsHekia+xAr7AzPtbAfDb0IkEaj2s22Nc3JkQ8hcAE7r/lesM+c70yAu3qfG3NHhaituG/7f8hWNt76vWv3/+bHaBx9xzoA/uenlQrzb0JLAUVsVzHc1WobgoNYS5Lz8AgPeGeIzXrhd4zpIu9wNQ77SYy8pa9PdWhHtdLXK/u0Ye7fs8r9O11ZcyplYyqusmqdz/1qi70Gpk27HeVcu1ifTfFa2PD6lvic36r8afl+BMed+umNK5FB9EFcomHLXu7qTe3xSAXSOnYUJ3izPAaDazM8s2Jw1cPgTf47Kocks2EXjsZpnGVBQ6vyp0f/NXAF4KPILRbLK6J4xm29sSl2UkatUwaq+QzzXX2BaZ5dcKPj+64GAI9gfg8DB/urTZw7RQmVzWpXsw80wnAAwmLcZOjhPglwe3461x85k48nEA3NYWf9Gd2bWV9e/UMD0+J+Ub9DyejDH+1s+fMqsqFAqFQpEHh2mO2Z1bAPBtq+l2GuP7l5uy8QXptxX2S8UGR2QMTwaw0xpLwjljGlV3VIzJwHB3C96vPg2ADRk+DF4mZtW6/7PXYN3OJFn/9iCxzPf9M7UO51vLqjzIrT4+X28r8DjXH2VF52yNsSycNWTyV6YtQnr1/kYEbpFnNfja/ooa1t8Gracn6d8FsrHhtyU6b1smDFg2DIDaa7OJWl/wM1QSbnRtyvqp0y0js9s3Nbkeu66HyR6NmbgfGwDgm2TGb6HNZBpF2cdRXE4/1ZBO3r8AYDTrcv6Vt+X1i7F8tUlcIfVmXiYm3rkuieKgi4rgVO/qmNuJpWh60yVcNIoZfdP1eqyOa0rs0uYAVNuaRlp1NwAu9s4kEsdpji49L3G/ZwZvhImocsu1L7NrK1LD9NwUbxP3dtvJfX62QKX7PXcXeM3Vae5Mjap3y3s7TDhm+cmlolzy2NJdUgkYLxP4VW1L3E9LR2njwfLvzp29PBiARZEh9MuJZtOjY3WaN29PGACAS5q5UAEA4MGfzh9oAXSfuh5vrTwaz88cTJ1JstBwtqnl49CtMGBrzr2MHHrfRO/fxLTss9+VmmslKrWiI3mLwwMfvEjITNsCLYY469+VWahXNFovLwAuPdyEdfUnccYo39bhLH8G//4EALorLnbneJ/UUmOZvPfmzCzqXHKMINL6yARd/QWbWexAloFHPn8egLAfb6A7egbj5SvW/WFUzKJc4+LKqbEtAWjfaw8tXEUonjSkMedqe9ZN7QBA0NK9RN+U76c8l97apvU58bqOzFPi06w36RTGYPHLz1oxm3nJbfh+4R0AvP/2I2gSkgAw3bxJTJ550BKJ4LvS3SHv0uXBolDFxX5S+L7x+fflZnWaOwA/XWvMnxdr0zpEnsfNc1oSxK39yg4LyNHXqglAxnwt06O+AiDSxf6F0aKl+Z9iO641Lh3j0bJrNqWl494MAF4JPEjb14YTML/iwrdvRerDbVk+cZJV4220ZQBhDzkvlFsfGU5WDf982xN7uFO18QXm1hMfXoyLO/uysgF44Peh1HsvFdPxkwCYMzOdNj6AhJmtSehpezksqRyW0Pzc5N73/c0A3ljSH4CaGzLQ/fZXvuNvxb8pIEfr5cWRtyQA5+gjszCaTSxKlbzgz17ojdvq8tVyrjwjE+PWN6dbt93fdxCazQVrCRWJy4bqrIheDUCyKZ0njj4EQMZ7obj8vLOoU8uNE2+147cnJwIQovOk3/F7AYj/IYbQiRVn6cstAPNqenmFY24huHmOLEZ8ThqK7Z8s7H1WPkeFQqFQKPLgnFSO3hKyrB92nrkxi6ipF3Ng7tDpJak1+Oqxe62NKssTXdUQXtwi9v+O7gY6vjCMGzVknRBwKBuTqywkvJJuYNp9sNzHZ0FfrSoAU7d/x5HsQMbNGgTAz6M+5KluTwNg2n+4wsZ1vmckuh6XAdga+zUA9TcNBCDikZKnkJSEzK6t+GnuTOvnvKkcuSlsX3y2kYHviTkuZPH+Yiem/xs0R23T+gDEP+3L8T4SGZ07qhIgxZTBxgzRIscf6E7omxqnvy9HJ7cF4GC/adZtTeaPIvy1ymf5WXDyD0J0UiQj+tthRI8uPx9nichJzdF9cIUl0d8B0Hn3APze90T7R8Vo5AlzJNI08f45tN39oF3qj66uFHA5NNaf+h8VL/K0KAp7n50iHHOT3rM1VxqKH3L38Gl2E9SS1Bp81f8eAMxxB8p6q2Jz7Yl2bHlvhvXzOWMa1XMe4txcMaXzn9fH4r+gYl68xAliPjgwYDpd+z+DboOYAJMHtCPoBxGKxuTkChlbXrRN6hE29wTTa/wBQMNNTxH5pIzRGSbWvMJxY7r8ft9dbWl3XO+Av7jbQ3LGihKc4y8249dJEhRR5cuiJ7F/k3CcvXIONQp4Nwqif1JnUp4OBJzng055VITjsvc/IkAni+5ss5HmC2WRE/Han5Uiz04fUZvPNy3GP8cV0qNNdwynz1TwqG6Nvno1AE7MCOTP1vNpPu85AMLf/tOWy1gO1N0pLrmpoTvo1unBMgvAolBmVYVCoVAoiolTa6sCeKz4k5o5Ca0NfUew8VFx/gbo3HjE5ww/TJGapjdvd/ZIbKRE2i8UCtIaQVI+1r0zmduCXwAoVwd11n0t+euJKQCMONMJl7gjVr3H//Ot5RrVVhxMew9z8nZ3+v3cBYBDt88nZq6YgeuOPYPxQv7atY7iUJaJiQOl8pL29112+yZ1fJTX6rlbPzcdtI/Xqv8IQKjeFhg+PiQO4wuyVtz3gy/GlBSnjffvRKpJR/SvzwAQPTPLbt/pzj6kRYtVIOHeT1kU/gtN35WAuxoPOGc8votFq7839EV2Pv8xAG4aF/YNmApAI/0oYqadqvCCDqd71iBI52UzRev+HnqI4dx5AMKeTKPh+yNIfEasMw2yhlHr3fKZ/y4PbsdPobZgu0Nj/QnYKVa0qhsuOVWLzI3Tzap5OfWamK72DBWfwaLU6gAs7dMJ44F4R9+u4DH8tz37htmi3S4a0+gxfpz1c1YVEZ6TR87mTvdsjhmk3tioqE6Ys+0nCGdxZEYblt8vL/8r7XpZH9rKjkYv663ERQ04eNsCAHpsl33UAAAgAElEQVQeuR/Ts54YE4457D65zaqxc0YT9mbxX9zrj4lpLnJoPJ+Hi+85t8m1xfYnqfFA4Wb+f4NZtaQc/7Adh/vPoPfRbgBk3uHc51XTrCEJz8niJr7zHLvfb9y59qxfJj6rmhMqJuLy+mNtCR+awKKc56vuhkFETZa5ozxdSGVB5+vLoQ8lSvT7+6bx39tymh04qYSdxZc4fPUq7vfMKPCY1WnuvDFR4hqCZjvG3VVhPse8aN1lFf/8/jjuyPEFATT6chSRL5WPb0/r5UXCO+KEDtkBAVvPFVorNeGzlhy971MA6i0aTuSLzh2jpfPGxtmfMu58MwB2vG7vRyvv8PnScmxxLADxd3xG9PKhRA/fXsEjsif5yXY0HCIBYZ/W2mDdfig7mzEDhxWa5qGEY370keGMWbeSQK280692e6zccl+vrorhuyafAVBdZ1/gY8ipOzg+XiZ415/KN33CbWM1vo9aY/1sWWQvuCpa0LKVkudY+43KF0xkwZJXetfWs8xfch+A0zTIgvIXV6e583bCf6w5ilNDbXPfnYOeKVE5ucJQPkeFQqFQKIpJuWuOFk79tz27hn1s/TzuXHviW2Y763al5urAdmx7RyJbl9/0Y86jPQCcloKSu/OGiYK//nnXw5jzsYzDUaYFZ2CxEpz5KoI1zefw2GCJKHTEas9R6Pyl2MFzO/6ws2QUZapVmmMBaDQcmd6aI71k1d/y3RF21YicjekOsbI0/98u3gqxPV9atGzNlCIQI6cOo9r/ym9MGr0eYwexUJ3u5MEnj0v/0ZZuaXhobCU2W+58lOoviO+2IgujFEXie+3ofq9Yfg601TvFvWQpFJ4xMpkLZ+S9zJuqcX1NFNtipXxh3hSP0lJuXTmKi8sN+88vhvzGww9K4IvXt44xv918sA0ZfqIcB84tnRAJ/u4ALXs9CsDOlot58VEplBTlJAvNhVQxY7x1uTG/nY8B4NSZQII32qoNvfTfRcx4SXym42e3cM5AHIApQ/wGnt9WoXorT07kBGnErC3d9XRREZhPn7O7dlmxpMJkmF1uceQ/H02zhgCYd5XCJ2Y2g1FKowF4XirfkDHtRgnE2vJWG954AzsB2cZNFt2zR03j5fghuP8iObjOjh8wGwzWcYVthA+/lNZpiY9WZ/9gW8zDzpaLGbDwLgAu3eb4lk/m9k3JelNqpLrdm1Tq6zweIHPoK7o7MDtBj7Esmt3WQpWcbXm/iewVwSDeGrbFfst9lg9OQJlVFQqFQqHIQ4VpjnkJ1rmR5S2y2stB1+zyxkaeC5AKD12vjsZzWck1UmNKCqYNjeRDy6KPdQTVHj0FwJ/44XFTTCwxebprvNqtF1+3ngOIWbCyFAIoDP9lexk/tin3x+4FoLRhGscfr07klzkWkCPHHTI2XWAAAO6aymfSL08Sv2rCHx3EJHrn7HHUeqdk5kdtbAPevu9b9mVJxRzf+OsVUszd8/vt7N9ZkwZjJCL5cF9bsY9mbiZ+mjuTPkfEJZF957lyHZvFZBr2dhKNzSPYOngSAN4aNz6vLb0eG7w13OHVfsYuXMyInY8AEFHCc80dRDNb2G86LyeK6cecUXHFDIJmb2XUM2J+zR2c4wwcIhz11apizhQTxa0man24tJLp+Fic3fbThkzcrznOnKDz9SXGPZH4bBG4WV5afKrKi2u6eq1UJhWdRoummmPMeYVhull4w9Vrj0s015xWn6DViPtI4+5W6PGORl+7FmZvzxKn3JjS0lg1ryN/vCRNsB9qOhDTnkPOGGKJSH6yHfUGiwkxt7/x38jIxhuthe1HPbqCeWdFgAR8VvRErWsgpn/jpBQe9r5E0+05eY57Ky5dwXDqNFHPS55j3YBnmNZhMQCdPaQ84HfRPwDQdtjocvWLWjGbqfX2Fr58RL67IVVskfLrnpjI02tHOLSQ+pGsavzSXtKePtrZiT/ORgKQejiAsJ+y0GbKvHulkQepsgujp4n/tP2LAYESqR/rqufavFoAVKHyV/pxBA4Rjtc6hlNlmGg8CUmRuCfJhB22NhX9yYsYzl+QA1s3pt4n8tJMqGavxT175FE8ljuuHZQxJYVN1+vRJ1SE9Zb3Z6D7QATlsDNt+W215FtGfHMFzY00DCdO5buGLqYOFzuG0PghqRdpNJswXnfNd5zTad2Y868a+KuVrIJHnm3P4VfEP+RyLq6oMx3K1fY1ON/JSMzgHO2tiGCuvATE2xYjV5r54V+a0qsaM/HDZIFTb5oJw/GkEl8i8f12HHjc4u+Jy9Wxw+ZhWJvmU6K8yX8CK5/thM88STV4psopHvi/jwCY+1xzNt8fXeA557vVYuTzUovzcZ/zJJvSMe6uUuCxFUX0gL8Y847kxcU9OQU3jc23rO92GWYWdqbzWfzm/QAMmWIbRA2dJ0kjTURsdtx9VjatzuLecq9zHeC21jKfzW+xBPoXfM53N/1ZeLY942+In/TYhghqL5VAC+dFdd0aXd0opoaWrJ9oaVE+R4VCoVAo8uAQzdH7m+1cdRUbf8cRB3nnbkl8rfqsm1SrOCFazu62C/IVfx51RurGuT+jcXjj3qNDo4l5VEK85/eaxe05VcSmhW6BZ0QzSHhSzKTfpTTPd/5w/y/w1bqj08gawmgG/xrXHTxKeyyNZY1Nojj3ovjBljf/BC1Q7wup4hM96Sgul8pPY7QQsOkkf3y0im6tpDE0fxavp6TW0xPzuEvW8HW3lNJ5o/wSzCydIBpNUk9vtt4UjWbptM6FnpPd7RrvNfoeAKNZS1v3zZiwaf/ZOctgEyYab5JOJ9GvXgMKLgrxT0WzeTdLH7gTgI2fnWNurY0AvBR4CLbd2gR+xphGn/HjCJvvXI1bG9sAoNjdP3TBwdRaL2kSpx4zEelie/a83Zzbc9RuHDF18lWI8v0hx3Q6xf5Yj+3eOBJzdhbeS6XsXvRSuKARy8/9+raFn2M0gsnmkw3jXIVqjBaO9w+2/t1294NUwXml5JyS53h+tJgsvxkzkdp620SUu2UVSG7jsT5SBb4gs6Yj0desQWoLySGMfX0XU6rbm3VtAjD/xJ17X+OZIwDnVIm4NLQd3YdsAuCNoH3WPMcXzrXl8MgGaLY6tw3UrdB6eXFlaShrmiwA4O64p/GbK6kn7qvym8SNnWTBUfu9BD6ttYmGm0Wo1n74YKnD1TN/Dgfgk5jFds20S9OyKve+hpueImqYNGq+ld/8n57nqK9Vk4OvS1nH7V3/Z/VF5sWAkUtGETDP/OdpTHud2z7t1LeNeKOxNA/+IyWGy1mykHyu+jq+vCJzTtzlmrQIOs0jgeIrnXvxDt4OldyhYJ29f77VpNFUn+xcYW64S1Ktek37hSk7ZBFX/81LGE+fRZsTDLbyrx+txy9KDWFJq/rFbp/2b6PuThdrIE6L/xvqkDxvVSFHoVAoFIpi4tQKObrAABJejeHAw1JkXIuWEWduA+C39bFETz/htCK2RaH19EQTXhOAMxN0VPHIYFNjMb2tT9dxp7t9WH+HPX0ByF4eTPBnsmpxdG+zY5PasrffVGuAyLOn7uT8s6LpkpDksKR3R3BhpKzShwxdwV1eCQB8cO4+Nm1qjFuUdLN4vv56WnkkARCl19L4m1FEvZATeu2AJOdzY9qzYvSHgHTXKK7meNWYyZaMUOu+9yZKRELwV6rZcUFcHtwOUzfRpDuESiqCJXhpz8dNqbKonBv4tm0CwPU30tjYdAmQ3yKVm4L2/ZIu1o6pUfWcOFDhRl8xXSbX1fLVIInWrq03M+BYL76LslXD2JZj4X3u7eEEzK+8Va/KC0sR8uP9g6n9xlZOvCWR+oef/oRRZyWVw1EV1SpN4XFFwSTMao3Gw0DY1yIc3dZUnhJrhaH18iK1i+SAnm+vodNt+xgULGbhi0YfRm+UykJhK7S4r3RcJLIFS3eN61Fa9j4jC7CihGO9r4dTJUFD8KyyTT7/JuFYWdH5VcFYrzYAR4baQic2dZpqZz595uTd9AuWZ6+zRyp9jvQg++Ucv9W2veU3YCC9lzQVuPBIhrVjDUC73f0IGiM/TXm1Y6rs5BaGq9Pc7bp0tPi/oYDzu3Ios6pCoVAoFHlQmqNCUUKU5qhQOJeEOWI6Tbx/jt12RxUbz02lKzyuUCgUCkVBxDyTE5E6eChvjZvPT9eku4mjBWNRKOGoUCgUikpJ0OytTJ1dDyj/2sfK56hQKBQKRR6UcFQoFAqFIg9KOCoUCoVCkQclHBUKhUKhyIMSjgqFQqFQ5EEJR4VCoVAo8qBSOSoQrZcXl7+W+qk7mi8tsCMIwCOJ95CwtC5Vp/67GvAqFApFRaE0R4VCoVAo8uAUzTFhlhTYPdp9lt12nUbLppz6sa8d6c1vjb5j4Mk7ATgyrQEuN0Vz8ljh+CLVAD+dleai9xzqTnVPaVo8PnQN4XpPuhzuCcDL4Wu43T0LgJ/TvZxauV/j6UnfcGlanG02oqXgqmRLItaxYfQGJq/8DwCGxIppxHtlUDu2vzWDhvOGA1B9i4GT/aU7ic7FyOgmvzGkim1sX6RKr84l9ULzX8yB6AIDqLpakoT//KExYauuWvel1K2C50X5PfXJ6QBok28AYDh12qnjUigUjifxPSlKfuiJGeg0WjuL2+4smY8+ONOV67ddKdN9nFJbteNekYCvBEq37mMGmZTq6PM3TT1pSANgXVoM8Wkyme5vUbpO8bdi1RkRRLk7N7xxsRU3DW7EXZYWVtnLQqz79Olmqnzp3JY8uqgIAJIeqc6+IdMZcOIu+Ty5rt1x0WMPcuEpaUBrPJjg1DEVxrnl9Ylr9WWB+zLN2Vw1GZhxRVqSLfupHTGfSidxw/Ekp47LcHcLflz46S2P06LBhJkfbvoDMPPkndZ9x49Wo95z0qXhVu3BVG1Vxb8djZsbRyc0A8DoZSJou3QTCliwDYqQKaWmtZSPOzEW1rb5BICaBciTer8+DUCz8FOkdrxcrEurrhwKhUKhUBQTpwfkRC8bSt150kQ2o5pXvv1uV2SVbt6xDwppWOooWu+UxrbbWn5B/+NdAbh5zw1MGRn4ciznqGOFnO0cjEelgWxIXBAAh66I5hr07Xa7484u04GpYjRGC2PrrWNXlol+P4lZ1W+v7fHxO56N64+2HpSRbMWx7aALJ7F3yR7jHl7SvLdH/e9tG+tDr/d6AWA6ccphY1MoLFj6j6aFaAk8kIXrTztLfA2tj4/17+I253Y0+mpVubbAi6NNxG1mNJugu+xrbxiO3xeOa9asj6jNwVdC+LyzdOdo52Zk3Pk7Afh1UWtqzt1vd3xM1iEAbmrLrvc5XDjqgoOJcrP96HVfPWj9EV0LOL487TzXLtoerBPXAwAIyCie6u1sLjV1kT9WBRZ8gMlYfoPJQ9oDbQDo6b2VB+P7EjPEOT5hR5GQnUWvr8bk36GBrnfvZETwBgAi9O7WXU0+HUnYSdWB/d+Erm4UF+4Mtn526XnJbv+FM2J+t3SIKA1aT08Azj8Zy+IXP5LrubizIcOFybfdA0B2ZDWOPiwNmps0SeLQ+arUr3ahwOuNrPkLACuSmxPfstTDKjb6mhJNj6sL11pUBWD+R5NzXGT5BdDFO7Lx+6Ls9700VPyKo0Z/R3+fc3b7tkyTdlbVF2zBmbOiMqsqFAqFQpEHh2uO2Q1q8pD3TwDcfeAB3G5UTGRlUWgr4Zogq7EEJrmmVL6YiZQnUgDw1BSk+1c+uv/wHNEvF6wFxgOjm4rT/kJ7P+v2yB+SMDgjkOAfjr52LQDO31eTrK7X8XCVqOH0LBfSknyLdQ1tpsRDRBbym5WGzK6iXaSG6e00wm2x3+Y6aneR1xgVIteIL+0gtDqOvdYUgEMDpgPudrtP9o+UUTw/3f68qFtfekVpx1RMtF5eJLzdmEW9ZgDQyi13zIp9IExCdgYxLvJ/W9N5Ks/Rvkz31gUFMmSU/A/7+5zjQJaBMYPFleNx8BwBFySw0tlvq8OFY2J3N+vf11aGUtWc5OhblBrXC/LfNWHiv3XXADBhddcizzEtCyJwnvPNbZs7ziDvQ1fZyDYbufZlTQKoXD45n6M6u88hUUWHcJv2iF8ieI9tW3n5R/8JpD4svrOo0QdZWHslAKPOtuLHo/WtAtHvkAa/SzmpWecz0KWL0NScuYTx0qUCrlp6TrzVjsNPf2Idx58Xa7Mtds4tzrKn7e4HCXhe/r5wZzBBs7dS1h6C2XfFcmjADOvndy43AmD5nDtJDTdhjJKnLt2cxRPHxWm361gY77RfTjX9NQAmnuhCY7+zAHy7pzmDWmwu05iKy817GpLQbyYUkl52zJBOv92DAAia7EHXGRsBmPNNF8IoY7ES/yoM9LXNMU99+BzBP8scXJ7vqcOFo7GKzQrsnuzcAJuSEjlBZsP6PiP5qsc0AH6PXcz7l5uy6lSjfMdvabaExEYZdGkq/qvoUdvzHeMoPDUywZ+/R35+3yVOu1WJ0Hp5MbnxUgBOG7MxucC5MbIyjOyZP3hpz1HRJGqu1uG5zHnfV25qfn+KzLEykblpXFjaaAFD/GWyMTSoTUq4rGoD1sRjNhgqLJDh74ouOMcvF1CFs/eF8O6ozwB4YfFAui2SADJj/FEi2FvoNZwxE1weLH4pi2C00DrE3lo16qxogD+vaYnXGdt2EYBCFY5a/VdB8WXvNq91d6feewesn+el1GTTGBlvyPothAA6X1lI9F4yFO3GXQDEcImF1AJq5Zx5xvqtxhDH1hqibRqrBwD2wSiOQNdQUsiuRxQuGhakhPLZGz0J+cb2fv/USP4vZRaMwPXYYNLMkpvsqXHlwaG/8semWACMB0qtx5eYymdfVCgUCoWignF4EYCEOa042m02AA0+G071LQYu50RiZjROx3ubmA6D9mWg2/BXacbsECy+ErObK1xJxnjlar5jdDF1yP4ki3nRosb1fXWs04oCfHd6Gx4aV5pOGwFAjfcrRx1VnV8VVhz41fr5tCGdVTcaArD6QiOS/ggDoGXnQ7SpkohWIzrCAN8jHMwWbbjfz8OoPzXFqau+Sz/Iind7i8WFHqNFw/p0N0bsfASA8GlaNJuL9jsVxL+pCICxU3NmLphm/dzr03GEf3tR9jlAwyoLo44eBuB+T1vRhm6dHsQYf9SqVVbdcKlCxpneqzW/zZiFIUcfbbJgFOH/rXzR0FovL671kAR7lycv8E60pDd1cJP3eM51mSdPZwWwYnFHAGrNOYQxOdmp47o4QqxTY0d+TV/vi9bCLW0njCZkhmPnxsLeZ4cLx0EJifTxuvUXl2LKoG9CP0wTxCyjXx9X0luVC7qoCAatWQ9A3M1w4po5R9k+9W0j9rVbSOu/HgYgqLt9TqPptljMetu93RLFb2Nwck6e1tOTx3aJUDudFcDy9+7Gd3ERCwStCMSMbi242FxMM3sHT2N1WhXGz3gCgGr/c7zgL65wNOVy4ydkZzFwvJjMg386juF8weHzefk3Ccf+h0+z84ZUcdo2rSXBG047/ZkrLpZykLlpu/tBslcE25lMK4Jji2OJv+MzhpwWgXKyzc0KHU9hHJ3cNse3WDCdn3oWoFQ5mY5AFxXBvSt2MdxPXDiXjel0WPECADFjd2POzCzzPVSFHIVCoVAoionDNccPErfT2NXF+nn02XasPdwAAM99HpjaSMHv/tE7eSnwEHFZYnZ4s1UXjJfLVijWWRz/QEw0+x+bSo8arZxyjxP/154DT0/nQLY4ovsufJ6WnSWqMtrrIuMCd+OmsTnJ16dLVPCQ1YOo820m2s05bnsnFAvQ6G33NRtKEC+mkQWZrkEMfb7dyGM5EWiNPx9FxKuOXdkXpjnevrcv58/6Wz+/c9v39PW+mO/8ZtNGFtuU/W/QHLWx8s6uXbOYFm8OBSDo08plFrSYTuPGf1LoMRYza3lzbFJb4h+eyb4sCRR7ZMHzREyRABpjSkq5jyc3lsIEh6c0ZH7neXR0L/idfu9KA35/VppIsK3wYKvy4MrT8ltndEthTUtx2/2eXpt5w3vhukECLUs0N+Wi3MyqxxbHsvt2KSvU8f0xhEwveMLRBQdz6P8iONpTju1ztCtZD8iDVJD/ryK58aNEiP3a+GunCUd9jVBGb1zH3R6lMxPU/1zygBwtdByFPjKc0CViCu4TuJMPhz0OgMvPZTfX6AID6PWH+J8G+UqnjehfJJcxekB+v3bCTHnhE3p+YtcJ5T/3PwaAaffBIu/3rxCOXlLqccSeOK4YvAF4Z3c3jOc88Tsk//2QRXsx3ax4c2Fm11aceED+7t5sN1ND7SvadOv0IFC+PlKtpyfxHzbmSG+b4J55TczTC6Z2q1Czrz4yHIAffl9W5HGdhg1xWoekMpFThPzoKD2ftP2SsZ88A0D1SaVz15SbcNS6u6OpmdM9IqduaKHH+vgwff9aAGkb9bDkzWh/31XS2zoNXVQET66RgJSeXpedJhxBHlrdfAku6Bh4hCXHpT7UzT0BRH12FrJseVeJA8MBaPOffcyttZFMs6yaWs18jpoTKkcwT14SJ+S0mhkwg2Y7pM5t9V6HynxdracnZxbXBrB2DWk+ZSQAoR8V/l0kzGpNQnfb5FX3u2HArVN2/g3C0YK+di3O3ycda67VN+MZnkKnWkcAaOmdyGfP9wbAbW3pS6w5msyurdgwz5bnaEnliG9ZtrzFkqLR67n+kLzDESPi+SJcYhfSzVn0jn+Iq1/L91reGnlxhWPslBFFvj8VzdWB7eg/di37UuV7PPZ2fdxWl/w5VD5HhUKhUCiKiVP6OZaE5NXRAGyN/Zp6X4hp0JFlpMpKar+2bJwsVS5OGtIZVvu2Ch5RHrQ6XH4NYUX0agA2Z2qZ8JBoZea4A0WdWe7oq0u/zo+2LrNW13CE5gigbSJNqY+94kbNeXo89ot5tagIVH14GMs32zpzKM3x1mi9vDg2rw4ACbcvpM7XQwCIet65fU8t6OpKbTVbFZv8XB7czs4PuTpNikA4s3H5rdC4uHLyJdEif3z2Q2roPLlhFhdK86XPEzWmfL4/kF6MAIZ2DUns6UqLVmIJWBKxzu64fsfvLXZPxIqkxS5J8+jjt5OxQ0WG5O4QdCsKe5+d3rLqVtzYklN9IxYMAZWviJfhiSvWHJtuC8cRTuUR3ACYjJifcuPjH2TSGO1/lONj5WeNeKQiB5afi13E5xLl4kbqOemQUt1B1zbtFZ+j5f9c+Z6kvy+WCjlHXoji9V7fEOO6CYDGU0YSNbF8zW6HxkpwVeL9n3Df7FjrdktwjkvPS8TF2gfovDFxIABBFfjumrOzqPWOfFeP7RvD/7d3noFRVGsDfrakkYQQQighgYR0Ik1KAEWkXOkiCmIFEZBeBfWzYPeqNBFEelERpUrzylUEkd6LtBAgREoIvaVu+X68yW42JCEhu5tcOc8f2JkzMye7M/Oet5cZdpY1kVJ6b2GXyby5sh+AQ3K/te7utNmdBMCkra3x3yQBk77zthK2Aa41lfqvLLb7pZ3C/scl17ra2sv4v30SgFvbfDBeu16s8yqzqkKhUCgUuShxzdE70WrpaVlbTGxnSmoyuUjr2IgpNb+yNEau8fFeB7djvjcMJxP4flIbAIa9F89H9X8CYJ5/I7sXeb5XdDGRtBm2CYBDGQaivpJw9tL4fSrA3ES0iYRhZiY2kNq6a69dY8LUp6kyW0LnA247P1ijUz1r4n/kLtGA2pQ7SIcyeVc6aryvq9MiQ8+91tRyQxcUyOL5+xHimseAZB9R31XHmRZi+q2+wf7zivt3XVaXk0T/Ie1mkN5W7CoxDw+k7EFXUgJKRzea7LquRa2kZfhbJMbYXzqxtdt4ANp3HYXfrOL97iUuHK9GW/+/OVHMbtU56JBrnVhQD4DQ5wsXDTvnqwkE6t04/6X4WLzSHF9IW1NPSrMd6+dJzfekgPLdKrdoXFzR5LAjZlcomudbFuwoHG92b4zrDWORIxP1wdV4d/V31HMVQ8UD84YT/FfJmbiuPy9dJS61L351jX8q51+TyM4y68vx1RCp8mK8eJFKbCnRBc2Bd7JMqbN33pGykU3Imr5Ej5NnwMeJ6Rutuu9gSIUNAPR+7AX+Tva12d8wRJ7nN6v+TIzLHzb7MkLScBRhI7dT54KUpdw/ZIolXzq+3QwooCnR7kM1iMCJPsezScU6PGzkNmJ9hgEQ3P0czCredBwiHLOTTLWVK2I4mVDguK+7z7B8LrfS0xHTsTApVmqkfkn+jvm0jo2o/pb4r6roXGn++hB8FjvPWa6fKDme8eHf0ja8MwAnDsdSZWPe48+1NTKu2SKe8LTOccJVCXIiyT6C8fQH4s/Z8/Ikav84lND/3P0Yrbc3x98TQf9z1/GE6j2I+FECXsLesW/uVEqXWJIai+D1O2Cm/PYLHO9b+Y5x33abghENdVzlu3LTWItVXDKmUmG38jJkE9DFmuvpyG7rRSV7YVb//QE2fRozV4hftML0rUSws0TmvPOzBix5R/xc62KWQUx+I105b0xh4CnJv7z0dTCRq0QhcMjCw2ym6ueysK/DYP4aai0XZzRbr6jTaC2fR5yPJWr4AacuhHL6CE99Ku8c14gbBIx3QZsuq3/zroI7kdSPSLD8v7i9d9TbQKFQKBSKXDhEc0wYLaaPjLBUwnr+nW9JM01wII+6b7J89j7tWDOXt1ZMF/qqARjOnrNsT2/XkMR2sk74odMU6mQ1vG/++lCHdeHIjxMXKwBgCDfyS1RWv+8o4MmCj8suU/X26Se4/e+qALjesE+xYLfa0nj1ljmTckcLzmLI1jK7d97IygrZjV7difxhIFETEgEw2LnE3dlWcKzLlLuOc9HoyDQbAavGeMGYCsDLzw7Gd3Mpi0RW5EuF6Vthes4tJdshBMBr0TbWrygPwE9PDiSlsq3u4Rsnz6h7chra44kYr4kZ0Zskx2toWc9c1c+3035FNwCOvOrDqKZr6aSyNwgAABuvSURBVO8j5l6j2USrQ/KicfnQF21ayRVjqbpevqsEvzKcGZHK4gZS1KHL1v5o4sUyGbApE4/tx7nRSiyB5zoZOBAi75xn4rsUew4OEY7BS8U0uHrt9zR7eiDl1klF9ZzBIZqGtWg919rVOmZzT0J2iyPWUTdKEze5QTr9up+/bgdatk8MmGZJ13j+ZDuLj9GZ5tRsqnUT88pjHQeR2Fkc5bE1T7Ag+DfLjZt0zdsy3hTvReXtRryOynduPBaPK+ftOifzRvGdHK7lzcZ3J3HlHan/OvNqLH19xVyjQ8xv/joxe10wplN/p5R1qvyZK6Hbd9pdKBYVo9nE6KRY9l+RxcPZXQEE/SZ/i35z6ewKo/jfIrtLRNmF2yib3xhK0FRtMmI8InmNEX1gtWc11riGWXa73xKlwZyZUBKzs5DdBSTyUgzHBnoQ4SIay6FH5jC5lriNhrx8PGu0taXeKYN8s6YBXsWegzKrKhQKhUKRC4dUyMmuwBCx2cTEKttZels0j7d2daFhdVHhv6y2Gl+tB2tSRMJPaxTrtAaa/OsK2xp8C8CY5Ia8Un4TL42QHmFeP+/HlOa4yLH/ZXRhIRx/pTJekfI77WiwgLisLiJPbJHODX5rJCTd50SK0yr5X3+hMRdaiMM+usY54s5XxJgqRhH3064EL7MWstcknit2V4T7uUKOQuFsdL6+nH9e0hpuxKay4CEJQ63vZjuu49HOJK2SggBF6RnrtMLjCsU/HSUcFYp/DqrwuEKhUCgUhUQJR4VCoVAocqGEo0KhUCgUuVDCUaFQKBSKXCjhqFAoFApFLpRwVCgUCoUiF0o4KhQKhUKRCyUcFQqFQqHIhdP7OSa+K1Vq/nplCrW29iC4n9TyM16+UtBhDiejTQMALvZLtWzbH/vtHeN0GllP5Gz1UmfyYKp+6vzGrwqFQqFwDE4XjobIFACiFgyiTpPjpLq7O3sKAOirBwFgLuPOmXb+rB7+OQBVdB6WMf++HIPRbKtc77xaHYDEVSEELZUO1EFJe1RHe8V9j75qALhKx5PzbQJIay0d9fY3mU/U+j4AhL1Qcp0eFIqi4BThqIuJBOBibHnc90ilnoBxW4rdjPJe0bi5cXqi1MyfUHsRK68+iDGrsNZT8R1IfUsa5Wo37cvjaOl4UYXzGJwx2VJAdq3ck+8/SGbFTKK+lAWOad/hgg5zCLqy8rsd/SjaZvuAlr8B0NzzKM+sGmyzL2LuLQA0x05hSkvPt4WaomjowkKI7yPPimvEDb6rN4doV1lMatFaO92cakvUKLEQOfqZ0bq7Q0Sw5fPR4V7SBgNY0nIq3Tb257WGawHo7ZNoGVdr9mCqj7k/WpYZWtUHIPO1K2ystZwJV2oAMPWXx+4YG/6tNCA27T+CPlC62RwbHoTLLS3V3nO8tUwXFsJTq7YS5HIZgP4/v0zlzSJDblfREjDD+o42ZxowZ9V6tgfK56hQKBQKRS6cUng89YlGAKz/ahpha18BIOJl+zTivRdMzerx8w9S2b3uth4EPnXI4nP0SLiG8VjJN04tChq9nuS+DQG4FQSGQOkpF/FlBuZdfxX7/ClPxgLw++SpAJwySNeS9psH4bldGo8GLkmwaSDtEDQa4mbJqje+7Yx7OkWtrT1IvVTG8tlvt07+nVl4reF+LTyurxrA1YercfFB+fM/7vI9nT0v5Tn2pimDFrukn2e1wdccem/oQ6pzpXEVAEIGH2Nu8H8t+3JqsNl8caUmADuvVaejv3SOWXi2EbQ647A55iS9Q0PONtcTPisZAGPciXzHZrauz9+tpZdhraa276Xbj1zM65C7krxCmgPvaLDgrmNTzKKJmcxmtBr53ctoZD7N9ncHwHOcD/rf7dsPVR8k/XY7rd1LX5+/C3XMpKthrOv4AACGhMS7jLaS3/PsFLPqwM8WW/7vs9fVGZcsEO2fexl7WR6QA42/pdvGNvCICOv/FYNbegcRhqefMtO5zj5+qfI1YBsoNDDqIRIaFf9aVUbaPpQhevETH2k+G5rLtquj0sgoYKGVk02pQXzT4VGZb/ypQs9D6+Fxz0Ixm4NNvrH5HO3TCwC/mcU67T+aKy83AWD464vo6rXCsl0Ej7A+1YtX93el4kxZeLheSycgq2WZo0ypyYMkuO/d4d/Qroy13d3jR7tw8kIFAEKm3HlP6o9nBQFevMjiIHlA9JmZDjX5atzcODaxDgA7O03EV+vBg2fF/F857oSYg4HL3etxPQwqNLwAwJKak6ioK5PnOdvz4D3NZVbt7GdAd9ex2YKQPMTHn3V+BKD2w0Oo9vud++8VXXgNEj6V2I/CCkaAXj5/8X3rNgD4zSq8cMwPZVZVKBQKhSIXDtccE36sTTevPQA02dedSpNLR8rDmo9aANB17B5mh6yg1QBpduz/del0ymu9vSEkyyE+0pMdrb4AwFcrK6zsgKLzxhSW3BTTwonXotGxp1jXTRrRlB+qj8v65Ebk0oGWBecvHSdYtEhfbeGjjp/yusT4ZhLIUb4ImqO9STamkHmj5C0ZpZp1gSwPHwuAv862u2yv063YuV4Co0K/PEHghUMOn47W2xsAjzXubKgxHoAUk5GWB3sA4PP0JTQpSdQw5G8izWkdMvztHFPq+QH1ie88JeuTPLPTh00G4IXY3uxsJi6Lstrc78e8tcaDGZmOmGaR6BzXCYDg8fvtEq2vC5fAoA4rdtLf53S+47L/9ssm+W76/STm+8pbzfgtsd/726HC0fxQXRbHTsOEhHdf31sBX4478pKFxmvRNgCeCh7Nfwd/zsr/kxdAy+YDCXnGOR3sC4uhVX3c3j7Pqojvc2y1ppz8murBoG3PARD54U2Lz7S4ghHA6AZeWnkpXjWlETXlksVHMuLDJzEEVwIg6Y1MPntgmeW4cJfLVNN73HnCLPx7yM1vnFv4uZgzMmi05xn5v1lDWXfxra6LWWYzrsm+7gR43QDgxKrQfM/nG28g4qcdhZ/A/cQ68fmsjV5Nptn6O76bXI99LXwBMF67RjDyMnKGO0Ln7w+L5F2yMHQF/f+W6MpT70fh9Z+dTptHUch+4X87fAJguxBr6Ca2ymPN5wC2i8vLJsm3fvLQi6QtkWdMa4DP35kOwIBvB1MN+yoaK2/7Mv+8mKqXhq3Jd1yiIZXWvw4nepS8y023b9vl+keH+wOwKg/BeMMkcQ71l48gemISAIZTMi6UbXa5fm6UWVWhUCgUilw4VHM893AZol1cLJ9DF14pdSu7gM+30DbjNXaNFhPHpoe+pn3fUUDRIhgdgcZFVprBHx9jRtBGm31Tr4UAMHNOByptTyFskyRX2+v71ZXzAaDbsxss25puHExonDWJ25B0AZIkcKDyEzARa+7h+ZFNCeyUAEAL/2Osvxhp2XdiU3VCJ8UVeU5mgwH/rrJaNNeJQH9B8i1PbEwlNIeWurXuj+zOkG+i90M9SUmQ3MjIqckYj58s8nXvR+KOBQCQGWW0ifZcuCOWiGs7S2RON5rXYF2EmCZHnGtG8lNiYnU7WzLzKQzJj4jWF+Ni1RrHXYkkPqUiUwI3APDhxQfZ/UIMAJp0iQ7VGOT+9Tx1Ek+s9+zYX9sCUD15F3ZJJcjB7tvB1PY5a7MtYk1/AKIn3bBuzDQQEbfL7u/y6M8lUOpER9vnGeDdCxL5Fz50u9Pyyx0iHPWV5Ybo+eJam+3Nf9hjU3Fm+cSWlJ9b8j6+qqvPU7OKRI4dfeErRoxaBMCcE0/YPUS5KCS8Lekla4LkhdDthERixf8UTtVpkvxaJcUxPtyjH0u494oK1jC0spvc0VWqmPcBqWmYDQZMKSKwqkzYgnGC7FrvVx3jZWsofzDn7vnBMqeLKZUdBy0PSY83X2Xz51NtxtV3FcfovkbfQVbE7obHXXhlZV8ip0n6wf9ayo4ziRgo5ublrcvbpGuEf1Pyvi6AtX/WJTy5+G6DkuA/bzyKyy0Dj1SvDUC5b7YCRwt1bHFTYjT1Yyin3ZT1yVYAvV/xzupFW9pOBKDb2lfxXLq9WNe+G4bTEpma1/O8alc9ACJwnhvEIcIxI1xWncN9f7bZPqr8MUw51ju93t9NlwzR0nwWOMZuXBiM8acIHSM3XZ3wF9kbK6HOUbO/ZkyTTqIhOYlsbfH0mw34rZeUtOsS35VbHwfitvkIAFVub3F4ubqNncZn/c/6AG1/ewq8nff4hTcrcSg1kF//Fg0xdY8f/vtEfHn+t/i5lgVRftVheg1+FIC51Tbwwy1/jqQGWPaHucvv96J3EnFPT+XXTvI3TX6sHYaTCQ6d2/861fTWmsdDzz6C7sCJUlEq8XD3yfSMlcXi3vWRhM0Sjaco+W0lxZVIF6pM2Em5Erj21ZiylNcW3ptWIauc5tB//8BbjSSuIXx2coG5mcWl/L6rd2xb0fZLAAavfZa/EyVNJ+qr2w6t0qV8jgqFQqFQ5MKhFXIuvdKEW9VyXg0y/MSgtqfDF5TVuhO2SmzaEf1LR9SgLjqcdktkLu29DtH655FEDHDO3PQ1gjkzQVZqexou4JZZTIit3huJ3yznmp+jd4tRYWxlqynFhIkUU+HMatkRrgBjL9dk2aSW+M3Jsg4UslhAUTA1E7PLzWpu+G05b4lkAyw1Ia/MdGdxzHyqZCVV90p8lHP/FwaAbkPhTXT3U4Wc1Wd3W3yOc68HM3HZ45Z9hjJmZnfOuyhDv4X9CF6dFcW4zT7R3/oqlTnVR6I/hz/3Ez3LWn/j5bfE3L/s4oPsTQzCd608R77zS9Ztc7m3FFDY/sFXlm3ND3bFs/3pEqnxm96+Id9NE1NpJV3+0eQFsehWRT5Y9DTB7zjmu9XFRLLqvwvvOm5nupln1/Un+tVjABhv3LjLEXmT3/PslPJxeeG50Z8fQ38hYtUAoPQIR7BWn1k3YzonDKkM69QbANOBwvkF7gV9jWAe+ukIr/uJ6XRVSlk++uxFAKcLRrC28DrdQcfDDWVO8V/UxPvHwpm/Lwxtimd7Cbl+J2wNrTxSqPmt+HVrvFFyL6yk4U1ZMzK7A0sZ1qWKEB/zXm/KLRafi8WvmQ/3k3Bce24fmea8X+IuGl2B+zaniVD9sNuLmHfbNwdSX7kSCb0kTSfoX6dZEflTnuPGXq7FgqUtASh/2IjXYsf6zXKjiw4HoMPSbTa5ew3+PZiKU0om5/uTU/Kure2af4Wcd5NlsZmXHxLguimNh+eKS8zeBdu13t6cnCUBh4cfnnfX8SPOS3nLA2Pq4vZz0YOz8nuelVlVoVAoFIpcOF1z1PmVB+DBdRd5139fqdQcs/n5rJjamr06EADvHxwXNHS1ZxO2fmI1vQw714RtM6R2YkmnlBQXbe0oei5ey+OeEhjT8o2h+HxXcgFY2S17Rk//jn95WJtbh/1HiuJHDjhQYOub+0lzHHNyDw3crNrhrOs1uJQpKRQ6jemOfqffHZLQ4HmN51iOa/zJMCp+5RwtSR9YlZO9q/PMkxsAeNf/sI12O+zcQ9wySNDb7pUPEDRW3jtmg2MTBK683IRtH1qf73Wpbgz7LqswuxNaP+Wk8X5xjbxdwdbcfSDDSJ/xwwGo8qMk+F+ZLyld2XVUcxKX9YyMbv1ckWokF4bs1nTJT8fw8ICd+OolCv7gjQDeD1oFQJSLbcWm7icf43Z7sfqYbha+IWKpMatm+4ayu2I4Sjhq6sdwrK8nmnR5eKOmXcZ4pGjVeeJmNGRf+y9p+Kf4RUOe3W/XOeZEFxlG8yX7GVVe7Oc3TGkkZT3TH59rT9z0aHyPSF9Cdhx02DwcxY3/hLKxtqTIRP/Rm9Dn8uqV6VxMzesR/LnkW04L/NOyvc3zfQr0Qd5PwlFTP4abod6Wzz7r4jBevlLAEULctEYc7STCoFt8J9KbJxX10nbhWo8m3AqUnyu6XRzzQlbjorGaEzsefRIAl356u7/gc6J1dydupuQBx7WcDcAHl2oBsL2R111N+fbkcl/xg7YYIAvUVfFSbjJwqssd973OX6rWnO4Tzr7Bk/M8X+3pQ6j2geMEvK6cD2T1lDVeSIbGkgKT/sGNO6pjxWzuCUDISycsaWV3o0S7chRE1BRxoto7PLzspCTiQqytayJcBhAxsGjnqL4caA+ZaY7/mozH4ln/oC8bIiVcWpNpwOQtJaWO9fWg89CdDKzwBwAdF44ipAT9dkVF6+lJ04rWF4+bW+nIldP+sZfD4xsDcHX8fy11ak901xOxoeTmVZow7z6EV45U33sJITkYF0QEJSMcy32z1ZIycfMT6NxqEEmx8qL9us9UVkfJy7XBE8MIGOc44WhKSyNqtKSL9VzWkvnVf2dMBVnkRn4ykNBXnWdJybZEHcjqRFOd/BfbxovSFivgz6owON9hDsV47brthqwArzLP+9Og22CWvC4xBMH6Mhx6aD4Aj1fqgulU/vVZC4PyOSoUCoVCkQu7q0Rx0xtS40fRA3NXl9Ho9ZxuL9qQFg11Jw4m4C/HqON7EoMgJMe8On/No+tFdSxsxNrpxzWU0bji/4dzOjeYMzMw/3VnRGzkQTfivH2Y8sujAGx/fjwtzkqkWGnpclIQSS/VYWVlq0nG5Q+fEpyNLdkF6GObvErc01KVY0nbKbzl1syppq5/CpmtxZ/7R/sJgGhoAb/evW+gs9Cv203QdTEjprzshjGrma8+taCj7EN2MZFz7zXg6uw1FkvFsqe+4I1P2gMUymRdEqRWcrv7ICdjvHiRilMvsmqQ/J5Dytm3NKTdhWN8x+nEJIn+XT1XA8xzwxpxqIe8JE1A5W2FswnfC24Hy6BtbmtKfmC0qOOnE2ph3pm/KSGtowQVxD8+jQRDKn57pGJDSVUGMaenY0xPJ76NBDM1ntqf6cOnAfDZxu6Y9h+x6/XSOjXC9aq8NLSb7s03qCtbllMj5Kb9o89YwJ10s5hTvc+Utgq7EPnpSeK6SOX/uq7uaDQau9euLM3EzWwIRnlewr9JR7tDUi+KEqiirxqA7q3zAFTTe3E9q7OELqM01NQRNG5uuI8XU2ELj1sM/FvSPOwRMKRxcyNxlCwOgpck25Qn1PmVBz/pZpLipSMzR6xHjIsr6J3v4dJFh3P0DW+8fOR3qjTOzeZ513p6EveR+EW/7DTvjuP3Zv2uroWPfbE7uuhwarrlncZTXJRZVaFQKBSKXNh9uaLTaFnzkjhIuyeOxm/2VhI+luioT7p9R6JBViltNg8m4kiiw7p0VF95mYT+KTY9BadW3QxAwpJf6TDvNQCCfpP5pFUQ06nnkDNMq/FF1hHuvPB/oyh7oOTSDnKSbXIxGavRzF1W9O8FeuFmpyBan01+AEwOmsiwB6T6f2HX/Fpvb7TlfEh8RkoifdpvDo95rM/aK6b0Jl+MBCBgmeNMwbe7xnI9xGrGux1oYkL77wD4v2975BtVZwypjLe29Gg4zqbCFj0L3pOm1tU7udJsnwSG+XzqZRnjcvj0HWa/7CT3o/39WPb4JKJdZb193WSg9T6JHCxvx56Z2joS8Wk+fKLAdJv8iJsRw5Ew6YnYLb4Thqeyg8NuFXtuCW/W51AfaRLQpGl3XOfEcq6TPKdDG67LZfYrg04j35XR7Nz7LuVJSZpf+MV4myo5T33cAUNWBaLbkRVwH3GOo1Ff5XkOgF4zhgEQOLFkXDu66HBaLN5DKw/HuD/sLhxrbnmB/U0kYiiwx0nOZzbhp+eliHWEizsNdvUBIPS5fQ5tX2U8dIxOs15jaz+5dhmN1W9YTe/BwT5ZPrA+4v/MWRD9glFu1sZvD8Jv8W67mteOT45Fmy7mq8hJZ4rUiTy7FNXwuqs5mik3hMt1+0V+LqqxDoAn459AEyQmIA5bbSam5vVIqWj9Hi8/oMO3kfhRWlQ+zvsVN+R53lumdBrPf5XQ2WL+dcTvfny+5IRuazmBijrPPF84IwIM6IMCbb/zrLDw1xYssJSVC/+tD+HpeVcG+adSfu5WntOKH/v7MeP4s6401tb+oLWUjxuT3JBjNypZjtFqTPQPEJNWc48UchqiGs0d6ZDyYmcek/ty2vJtDBk7CIBK3xzIt+GutkwZkl6qC8DLg9bQ22caNX/vB0B4n8N29Ssv6mltaLy17o/wZcHjs+/ReTcCIDXNbvO4G9eDZfFYXmsbS7E0bA1sKNw54jIzqLrBPk2OC+LmM425FqoleHlWJ53D1lZ3x17xY5WvbXpedis/883iL3aUWVWhUCgUilzYvQiAPrgah9+oLCfP0DCzwywecRfzx8NvDKb8MgmKyW+lZ2+yTQhXnr+FJis+59cG0y2tWEA0xzeTRfNYeqQuNabIn63ZYv+k/1OfNuHIi2KquGxKZf510VzmLmxDRs1UjLdFmde4G3FJlAgxXdRN0m65sbe1mGxGnvkXiaPFnKX9034aztIzYj5207hYnO2H06ta9rcsc5IqhSxWfMuUztysqMBf+jZDs9VxBRQAzi2vCWT1byyAE4ZUxiY9BkAzn2O0LJMAYNEaAWLHDMJvdv5azz+9CMCVXk1I6Sj5x57uGRYtMjdatDaNkNse7sqFP+R+CfrIMaY2TQO5p75ZPh2fLM1n4c2qfLizAwCh0+RPPN5TmqwPbPo7Q32tEeAxf/Ql/FPR0uxdKzl4h4fFdZMXN0xy3V9Tq/DWT8/hlSi3UaVpOxxeoScvzo1uyoevfMNjHmIqz1kcoSAuGVN5aMNQwns4rp9mtvn8hzVz8NK4kWiQ4M2bZquxM0yvxU1j/Tz1WghzJ0vUr/+0wlstSk2FnPsdjV4PdaTnYVJTa0qDxgjmAu5N7zNG3K9khZ1fTXVIEfTrL0hC/IKPx9n4avNjY5orS680tHzevOBBNFnvyoq7bjtkcZEfWk9PAM71qcONKAMftVwKwDNeFwt9jvDfxOQf/tLeAjuH/NOFY040ej26qlUAOPVCEDN7T2HZVSlKv2xnA8u4kGUmXNcXXHbPntx4rjFvfzAPgNYe+YdLatHy6nm5r7dMb0CFuTsdJojSOjbCd3TeieeJC2vgfVYcCu6rSlepzLhZ8jsebfc12lzGxOzFz01TBo9sF3N00Dit3Tqt5Ic+KBCA9mv32xRsL4g621+k6pNFL3CvhKOi0Gjr1sTgZfVHJDURrSqltgQv+W6QAJuKGy9gPG7f3CJ7kd00WqPTcmaIWAVuB5qY12ka85MfBmB2tU0Wv0/Yz/2ovF5WJ2W/LzgA634SjqWZ7Bfo1YcCSWonQvn7ZjN5NsunCBD1xS00iVKZ5l5bGt0vnH29KeP6Smm7Vh4pxPzZC/edEpBVZXzJBN1oXFy50K8BwwYvAeClssk2+6ddq8rKxyX1znT67D0tzlRXDoVCoVAoConSHBWKIqI0R4Xin4PSHBUKhUKhKCRKOCoUCoVCkQslHBUKhUKhyEWBPkeFQqFQKO5HlOaoUCgUCkUulHBUKBQKhSIXSjgqFAqFQpELJRwVCoVCociFEo4KhUKhUORCCUeFQqFQKHLx/3dPFvZbYlNyAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 576x576 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,8))\n",
    "plt.subplot(221); plot_digits(X_aa[:25], images_per_row=5)\n",
    "plt.subplot(222); plot_digits(X_ab[:25], images_per_row=5)\n",
    "plt.subplot(223); plot_digits(X_ba[:25], images_per_row=5)\n",
    "plt.subplot(224); plot_digits(X_bb[:25], images_per_row=5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    ">数字3和数字5之间的主要区别是在于连接顶线和下方弧线的中间那段小线条的位置。 果你写的数字3将连接点略往左移，分类器就可能将其分类为数字5，反之亦然。换言之，这个分类器对图像移位和旋转非常敏感。因此，减少数字3和数字5混淆的方法之一，就是对图片进行预处理，确保它们位于中心位置并且没有旋转。这也同样有助于减少其他错误。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 多标签分类\n",
    "- 到目前为止，每个实例都只会被分在一个类别里。而在某些情况下，你希望分类器为每个实例产出多个类别。例如，人脸识别的分类器：如果在一张照片里识别出多个人怎么办？当然，应该为识别出来的每个人都附上一个标签。假设分类器经过训练，已经可以识别出三张脸——爱丽丝、鲍勃和查理，那么当看到一张爱丽丝和查理的照片时，它应该输出[1， 0， 1]（意思是“是爱丽丝，不是鲍勃，是查理”）这种输出多个二元标签的分类系统称为多标签分类系统。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 172,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train_large = (y_train >= 7)\n",
    "y_train_odd = (y_train % 2 == 1)\n",
    "y_multilabel = np.c_[y_train_large, y_train_odd]\n",
    "\n",
    "knn_clf = KNeighborsClassifier()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
       "                     metric_params=None, n_jobs=None, n_neighbors=5, p=2,\n",
       "                     weights='uniform')"
      ]
     },
     "execution_count": 174,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "knn_clf.fit(X_train, y_multilabel)    # 训练出两个标签"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False,  True]])"
      ]
     },
     "execution_count": 175,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "knn_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 评估多标签分类器的方法很多，如何选择正确的度量指标取决于你的项目。比如方法之一是测量每个标签的F1分数（或者是之前讨论过的任何其他二元分类器指标），然后简单地平均。下面这段代码计算所有标签的平均F1分数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train_knn_pred = cross_val_predict(knn_clf, X_train, y_multilabel, cv=3, n_jobs=-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.978007392578192\n",
      "0.9793609781040743\n"
     ]
    }
   ],
   "source": [
    "print(f1_score(y_multilabel, y_train_knn_pred, average='macro'))\n",
    "print(f1_score(y_multilabel, y_train_knn_pred, average='weighted'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<small>跑了快40分钟，kNN真可怕</small>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 多输出分类\n",
    ">- 简单来说， 它是多标签分类的泛化， 其标签也可以是多种类别的（比如它可以有两个以上可能的值）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "metadata": {},
   "outputs": [],
   "source": [
    "noise = np.random.randint(0, 100, (len(X_train), 784))    # 噪声"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 191,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0, 99, (60000, 784))"
      ]
     },
     "execution_count": 191,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "noise.min(), noise.max(), noise.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 193,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train_mod = X_train + noise    # 训练集特诊加入噪声"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 194,
   "metadata": {},
   "outputs": [],
   "source": [
    "noise = np.random.randint(0, 100, (len(X_test), 784))\n",
    "X_test_mod = X_test + noise    # 测试集特征加入噪声"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 196,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train_mod = X_train\n",
    "y_test_mod = X_test     # 未加入噪声的数据集，（不直接使用原来的数据集，以便后续还可以使用原始数据）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 197,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "some_index = 5500     # 随机选取测试索引\n",
    "plt.subplot(121); plot_digit(X_test_mod[some_index])     # 加入噪声的数据\n",
    "plt.subplot(122); plot_digit(y_test_mod[some_index])     # 原始干净的数据"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 这个模型好像是用来清除噪声的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 198,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
       "                     metric_params=None, n_jobs=None, n_neighbors=5, p=2,\n",
       "                     weights='uniform')"
      ]
     },
     "execution_count": 198,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "knn_clf.fit(X_train_mod, y_train_mod)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 199,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAOcAAADnCAYAAADl9EEgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAFC0lEQVR4nO3doU9bawDG4dMbcDVzEAJLECgwBIdFIUgqpia2hGQJloT/AIcgOBIMOBQSh0IhUKyaIQA5wrKZil517xW3/Xpvoe1b9jxyb844gl9OwpfT1trtdgXk+WPUNwB0Jk4IJU4IJU4IJU4INdFj96dcGLxap3/05IRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQ4oRQE6O+AUjQarWK++Tk5JDu5B+enBBKnBBKnBBKnBBKnBBKnBBKnBDKOeeYubu7K+7NZrO4z83NFff379933X7+/Fm8dnp6urjv7e0V9+vr667b6elp8dpGo1Hcf/36Vdw/ffpU3Le3t7tuj4+PxWv75ckJocQJocQJocQJocQJocQJocQJoWrtdru0F0f6U6vVRn0Lv50ev+ej1vEXwpMTQokTQokTQokTQokTQokTQokTQnmfcwAODw9HfQtd7ezsFPelpaWB/ezV1dXiPj8/P7CfPY48OSGUOCGUOCGUOCGUOCGUOCGUOCGU9zn7UPp81aqqqpWVlb7/717fEzkx4Wj6DfI+J4wTcUIocUIocUIocUIocUIof5fv4Obmpri/5Kikqqrq+Pi46+aohL94ckIocUIocUIocUIocUIocUIocUIor4x1cHR0VNy/fPkysJ8d/lV1DIZXxmCciBNCiRNCiRNCiRNCiRNCiRNCOefsoFbreOw0FPv7+8V9fX29uC8sLLzm7TAczjlhnIgTQokTQokTQokTQokTQokTQjnn7MPT01NxPz8/L+4fP37s+2c3m83ivrm5Wdw/fPhQ3Evvqtbr9eK19M05J4wTcUIocUIocUIocUIocUIocUIo55xvzMnJSXH//PlzcW80Gl23s7Ozfm6J3pxzwjgRJ4QSJ4QSJ4QSJ4QSJ4RylPLGfP36tbhvbGwU99vb267b9fV18drl5eXiTleOUmCciBNCiRNCiRNCiRNCiRNCiRNCOef8zTw8PBT3mZmZvq+dnp7u655wzgljRZwQSpwQSpwQSpwQSpwQSpwQamLUN8BwXV1dFfepqamum3PM4fLkhFDihFDihFDihFDihFDihFDihFDOOd+Y79+/F/fd3d3ivrW19Zq3wwt4ckIocUIocUIocUIocUIocUIoH435xtRqHT9l8T/r8fvAYPhoTBgn4oRQ4oRQ4oRQ4oRQ4oRQ4oRQXhnrYHFxsbgfHBwU92/fvhX32dnZ/3tLf7u4uOj72qqqqsvLyxddz/B4ckIocUIocUIocUIocUIocUIocUIo55wdNJvN4r62tjakO/m3nZ2d4v7jx4/iXq/XX/N2GCBPTgglTgglTgglTgglTgglTgglTgjlnLODXp/d2mq1ivvz83Nxv7+/77q9e/eueO1L3gVlvHhyQihxQihxQihxQihxQihxQihxQijfzwmj5/s5YZyIE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0KJE0L1+grAjh/ZBwyeJyeEEieEEieEEieEEieEEieE+hOIp65URkUpsAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "clean_digit = knn_clf.predict([X_test_mod[some_index]])\n",
    "plot_digit(clean_digit)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  },
  "toc-autonumbering": false,
  "toc-showcode": false,
  "toc-showmarkdowntxt": false,
  "toc-showtags": false
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
